Senin, 17 Desember 2018

Sorting dalam bahasa C


                            Sorting dalam bahasa C
Sorting dalam bahsa c dapat mempercepat operasi pencarian dalam daftar.
Sorting mempunyai 2 tipe yaitu :
·        Ascending
·        Descending
Sorting dalam algoritma mempunyai 2 arti : internal dan eksternal
Internal sorting adalah semua data yang akan diurutkan dimuat kedalam RAM.
Eksternal sorting adalah penyortirannya tersebut memakai penyimpanan sekunder.
Sorting juga terbagi lagi ada yang simple dan ada yang menengah.
Yang termasuk kedalam simple adalah :
·        Bubble sort
·        Selection sort
·        Insertion sort
Yang termasuk kedalam menengah adalah :
·        Quick sort
·        Merge sort
Sekarang saya akan menjelaskan satu persatu
                             Bubble sort
Bubble sort bisa disebut membandingkan kedua nilai yang berdekatan dan ditukar (jika perlu) intinya pertukaran suatu yang ingin dibandingkan.
Contoh kodingan dari bubble sort yaitu :
void Bubble(int *DataArr, int n)
{
int i, j;
for(i=1; i<n; i++)
for(j=n-1; j>=i; j--)
if(DataArr[j-1] > DataArr[j]) 
             Swap(&DataArr[j-1],&DataArr[j]);
}

Dia akan membandingan antara yang kecil dengan yang disampingnya.
                        Seletion sort
Dalam kodingannya :
Algorithm:
for(i=0; i<N-1; i++){      /* N=number of data */
Set idx_smallest equal to i
for(j=i+1; j<N; j++){
If array[ j ] < array [ idx_smallest ] then idx_smallest = j
    }
Swap array[ i ] with array[ idx_smallest ]
}

Selection hampir sama sepemahan saya dia lebih langsung ketimbang bubble sort

                   Insertion sort
Dalam kodingannya :
for(i=1; i<n; i++) {
   x = A[i], insert x to its suitable place between A[0] and A[i-1].
}

Insertion sort hampir sama juga dengan kedua sort diatas namun insertion memiliki wadah untuk menampung apa yang ingin diseleksi.

Wadah tersebut yang akan diisi untuk menyeleksi namun itu hanya sementara setelah itu nilai akan terseleksi ke tempat yang lebih tepat.
                   Quick sort
Dalam kodingannya :
void QuickSort(int left, int right)
{
      if(left < right){
            //arrange elements  R[left],...,R[right] that
            //producing new sequence:
            R[left],...,R[J-1] < R[J] and R[J+1],...,R[right] > R[J].
            QuickSort(left, J-1);
            QuickSort(J+1, right);
       }
}


                   Merge sort
Merge sort adalah pengurutan algoritma berdasarkan algoritma devide dan conquer.
Divide-and-conquer adalah paradigma desain algoritma umum

Devide : membagi input data dalam dua subset yang disatukan

Recur: pecahkan masalah sub yang terkait dengan subhimpunan

Conquer: menggabungkan solusi untuk setiap bagian menjadi solusi





Tidak ada komentar:

Posting Komentar