Quicksort Pada Bahasa C

Quicksort mengurutkan data dengan pendekatan divide-and-conquer,yaitu membagi masalah semula menjadi beberapa submasalah sejenis yang lebih kecil dan menyelesaikannya. Quicksort melakukan pengurutan dalam putaran secara rekrusif. Pengulangan secara rekursi dilakukan jika jumlah data yang akan diurutkan lebih dari satu buah. Untuk lebih jelasnya mengenai proses pengurutan dengan algoritma Quicksort silahkan saksikan video berikut :

Fungsi Quicksort

Berikut ini merupakan fungsi dari Quicksort :

void quickSort (int a[], int lo, int hi){ 
//  lo adalah index bawah, hi adalah index atas 
//  dari bagian array yang akan di urutkan 
    int i=lo, j=hi, h; 
    int pivot=a[lo]; 
 
//  pembagian 
    do{ 
        while (a[i]<pivot) i++; 
        while (a[j]>pivot) j--; 
        if (i<=j) 
        { 
            h=a[i]; a[i]=a[j]; a[j]=h;//tukar 
            i++; j--; 
        } 
    } while (i<=j); 
 
//  pengurutan 
    if (lo<j) quickSort(a, lo, j); 
    if (i<hi) quickSort(a, i, hi); 
}

Contoh Kode Quicksort

Berikut ini contoh kode program lengkap dari algoritma Quicksort :

#include <stdio.h> 
#include <stdlib.h> 
 
 
void quickSort (int a[], int lo, int hi){ 
//  lo adalah index bawah, hi adalah index atas 
//  dari bagian array yang akan di urutkan 
    int i=lo, j=hi, h; 
    int pivot=a[lo]; 
 
//  pembagian 
    do{ 
        while (a[i]<pivot) i++; 
        while (a[j]>pivot) j--; 
        if (i<=j) 
        { 
            h=a[i]; a[i]=a[j]; a[j]=h;//tukar 
            i++; j--; 
        } 
    } while (i<=j); 
 
//  pengurutan 
    if (lo<j) quickSort(a, lo, j); 
    if (i<hi) quickSort(a, i, hi); 
} 
 
main(){ 
    int tabInt[10]={24,17,18,15,22,26, 13, 21, 16, 28}; 
    int i,n=10; 
 
    for(i=0;i<n;i++){ 
        printf("%d ",tabInt[i]); 
   } 
    printf("\n"); 
    quickSort(tabInt,0,n-1); 
 
    for(i=0;i<n;i++){ 
        printf("%d ",tabInt[i]); 
    } 
}

Demikian penjelasan mengenai algoritma Quicksort, silahkan melakukan eksplorasi lebih lanjut

Block AdBlock - Powered by Admiral