Source Code Program Quick Sort Ascending dan Descending

Source Code Program Quick Sort Ascending dan Descending

Algoritma quick sort adalah algoritma pengurutan data sama seperti algirtma yang lain yaitu terdiri dari ascending dan descending. Metode quick sort berjalan dengan cara membuat dan menentukan nilai tengah dari suatu bilangan.

1. Ascending
Setelah kita menentukan nilai tengah  (pivot) dari urutan bilangan, kemudian kita mengambil nilai pada index 0 lalu bandingkan dengan nilai pivot, jika nilai index 0 lebih kecil dari pivot maka letakan nilai tersebut di sebelah kiri pivot. Apabila nilai index 0 lebih besar dari pivot maka letakan pada sebelah kanan pivot.

Berikut source code quick sort ascending untuk 10 input bilangan :


#include <iostream>
#include <chrono>
using namespace std;

void quick(int *nilai, int rendah, int tinggi)
{
    int i = rendah;
    int j = tinggi;
    int pivot = nilai[(i + j) / 2];
    int temp;

    while (i <= j)
    {
        while (nilai[i] < pivot)
            i++;
        while (nilai[j] > pivot)
            j--;
        if (i <= j)
        {
            temp = nilai[i];
            nilai[i] = nilai[j];
            nilai[j] = temp;
            i++;
            j--;
        }
    }
    if (j > rendah)
        quick(nilai, rendah, j);
    if (i < tinggi)
        quick(nilai, i, tinggi);
}

int main()
{
    int nilai[] = {84,87,78,16,94,36,87,93,50,22};
    int n = sizeof(nilai)/sizeof(nilai[0]);
    auto start = chrono::high_resolution_clock::now();

    quick(nilai, 0, n);
    auto finish = chrono::high_resolution_clock::now();
    cout << "Running Time : " << chrono::duration_cast<chrono::nanoseconds>(finish-start).count() << " nanoSeconds\n";
    return (0);

}


2. Descending
Setelah kita menentukan nilai tengah  (pivot) dari urutan bilangan, kemudian kita mengambil nilai pada index 0 lalu bandingkan dengan nilai pivot, jika nilai index 0 lebih besar dari pivot maka letakan nilai tersebut di sebelah kiri pivot. Apabila nilai index 0 lebih kecil dari pivot maka letakan pada sebelah kanan pivot.

Dan Berikut adalah source code untuk algoritma quick sort descending.

#include <iostream>
#include <chrono>
using namespace std;

void quick(int *nilai, int rendah, int tinggi)
{
    int i = rendah;
    int j = tinggi;
    int pivot = nilai[(i + j) / 2];
    int temp;

    while (i <= j)
    {
        while (nilai[i] > pivot)
            i++;
        while (nilai[j] < pivot)
            j--;
        if (i <= j)
        {
            temp = nilai[i];
            nilai[i] = nilai[j];
            nilai[j] = temp;
            i++;
            j--;
        }
    }
    if (j > rendah)
        quick(nilai, rendah, j);
    if (i < tinggi)
        quick(nilai, i, tinggi);
}

int main()
{
    int nilai[] = {84,87,78,16,94,36,87,93,50,22};
    int n = sizeof(nilai)/sizeof(nilai[0]);
    auto start = chrono::high_resolution_clock::now();

    quick(nilai, 0, n);
    auto finish = chrono::high_resolution_clock::now();
    cout << "Running Time : " << chrono::duration_cast<chrono::nanoseconds>(finish-start).count() << " nanoSeconds\n";
    return (0);

}
Previous
Next Post »