Skip to main content

Sorting

Penyortiran perlu mempercepat operasi pencarian dalam daftar.

Jenis penyortiran:
Naik
Turun

Algoritme penyortiran:
1. Penyortiran internal
Semua data yang akan diurutkan dimuat ke RAM
2. Penyortiran eksternal
Menyortir proses menggunakan penyimpanan sekunder

Jenis Sorting :

Simple:
  Bubble sort
  Selection sort
  Insertion sort
Intermediate:
  Quick Sort
  Merge Sort


Bubble Sort 
~membandingkan dua nilai yang berdekatan.
~membandingkan dan tukar (jika perlu)
~dikenal sebagai semacam pertukaran


contoh algoritma dari Bubble Sort:

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]);
}

Selection Sort 
Contoh algoritma dari Selection Sort
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 ]
}
Insertion Sort 
Contoh algoritma dari Insertion Sort :
for(i=1; i<n; i++) {
     x = A[i], insert x to its suitable place between A[0] and A[i-1].
}

Quick Sort 
Contoh algoritma dari Quick Sort :
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 algoritma pengurutan berdasarkan algoritma divide-and-conquer
~Divide-and-conquer adalah paradigma desain algoritma umum
~Bagi
membagi input data dalam dua subset yang disatukan
~Rekur
memecahkan masalah sub yang terkait dengan subhimpunan
~Conquer
menggabungkan solusi untuk setiap bagian menjadi solusi


Comments