Macam-macam Sorting pada Bahasa C

Dalam pemograman pada bahasa C memiliki cara untuk mengurutkan data. Konsep sorting dapat memudahkan untuk mengurutkan data acak. Macam-macam metode sorting dalam bahasa C antara lain :


1. Bubble Sort

Bubble sort adalah metode pengurutan data dengan cara melakukan penukaran data tepat di sebelahnya secara terus menerus sampai dipastikan dalam satu iterasi tidak ada lagi perubahan. Jika tidak ada perubahan maka data sudah terurut.

Proses pengurutan Bubble Sort

Berikut merupakan proses pengurutan Bubble Sort dengan array "7 9 4 1 5".

Proses pertama :

(7 9 4 1 5) menjadi (7 9 4 1 5)
(7 9 4 1 5) menjadi (7 4 9 1 5)
(7 4 9 1 5) menjadi (7 4 1 9 5)
(7 4 1 9 5) menjadi (7 4 1 5 9)

Proses kedua :

(7 4 1 5 9) menjadi (4 7 1 5 9)
(4 7 1 5 9) menjadi (4 1 7 5 9)
(4 1 7 5 9) menjadi (4 1 5 7 9)
(4 1 5 7 9) menjadi (4 1 5 7 9)

Proses ketiga :

(4 1 5 7 9) menjadi (1 4 5 7 9)
(1 4 5 7 9) menjadi (1 4 5 7 9)
(1 4 5 7 9) menjadi (1 4 5 7 9)
(1 4 5 7 9) menjadi (1 4 5 7 9)

Jika diperhatikan, pada proses ketiga masih terus berjalan agar tidak ada satupun penukaran pada suatu proses. Proses ini dilakukan untuk verifikasi data. Kelebihan metode ini yaitu metode yang paling sederhana, namun kekurangannya ialah tidak efisien karena jika mengurutkan data yang besar maka akan sangat lama prosesnya.

Contoh program sorting menggunakan Bubble Sort :



#include <stdio.h>

int main()
{
    int i,j,n,t, A[100];
    printf("Masukkan banyak data : "); scanf("%d", &n);

    for(i=1; i<=n; i++)
    {
        printf("Data %d = ", i); scanf("%d", &A[i]);
    }

    for(i=1; i<=(n-1); i++)
    {
        for(j=n; j>=(i+1); j--)
        {
            if(A[j-1]>A[j])
            {
                t=A[j-1];
                A[j-1] = A[j];
                A[j] = t;
            }
        }
    }

    printf("\nUrutannya adalah : ");
    for(i=1; i<=n; i++)
    {
        printf("%d ", A[i]);
    }
    printf("\n");
    return 0;
}

bubble sort

2. Insertion Sort

Insertion Sort merupakan metode pengurutan data dengan menempatkan setiap elemen data pada posisinya dengan cara melakukan perbandingan. Metode ini sama seperti mengurutkan karti, dimana jika suatu kartu dipindah tempatkan posisinya, maka kartu lainnya akan bergeser sesuai kondisi pemindahan kartu tersebut.

Proses pengurutan Insertion Sort :

  2    3    9    6    4    5    1
  2    3    9    6    4    5    1
  2    3    9    6    4    5    1
  2    3    6    9    4    5    1
  2    3    4    6    9    5    1
  2    3    4    5    6    9    1
  1    2    3    4    5    6    9  

Contoh program sorting menggunakan Insertion Sort :

#include <stdio.h>

int main ()
{
    int angka[100];
    int i, j, a, n;

    printf("Masukkan jumlah data : "); scanf("%d", &n);
    printf("Masukkan data :\n");
    for (i = 0; i < n; ++i)
    {
        printf("Data ke-%d = ", i+1); scanf("%d", &angka[i]);
    }

    for (i = 0; i < n; ++i)
    {
        for (j = i + 1; j < n; ++j)
        {
            if (angka[i] > angka[j])
            {
                a = angka[i];
                angka[i] = angka[j];
                angka[j] = a;
            }
        }
    }

    printf("\nSorting dalam bentuk descending\n");
    for (i = 0; i < n; ++i)
    {
        printf("%d\t", angka[i]);
    }
    return 0;
}

Insertion Sort

3. Selection Sort

Selection Sort merupakan kombinasi antara sorting dan searching. Metode ini sangat sederhana karena setiap proses akan dicari elemen-elemen yang belum diurutkan yang terkecil (ascending) atau terbesar (descending) yang akan ditukarkan ke posisi yang tepat di dalam array.

Proses pengurutan Selection Sort :

  7    5    1    9    2    6    4  
  1    5    7    9    2    6    4
  1    2    7    9    5    6    4
  1    2    4    9    5    6    7
  1    2    4    5    9    6    7
  1    2    4    5    6    9    7
  1    2    4    5    6    7    9 
  1    2    4    5    6    7    9   

Contoh program menggunakan Selection Sort :


#include <stdio.h>

int main()
{
    int a,b,temp,total;
    int data[20];
    printf("Masukkan jumlah data = ");scanf("%d",&total);
    for(a=0;a<total;a++)
    {
        printf("masukkan nilai pada INDEX ke %d = ",a+1);scanf("%d",&data[a]);
    }

    for(a=0;a<total-1;a++)
    {
        for(b=a+1;b<total;b++)
        {
            if(data[a]>data[b])
            {
                temp=data[b];
                data[b]=data[a];
                data[a]=temp;
            }
        }
    }

    printf("\n\nData setelah diurut : ");
    for(a=0;a<total;a++)
    {
        printf("%d  ",data[a]);
    }
    printf("\n");

    return 0;
}

Selection Sort


4. Counting Sort

Counting sort adalah suatu metode pengurutan dimana dalam proses pengurutannya yaitu dengan menentukan posisi elemen suatu nilai. Jadi pada prosesnya dibutuhkan suatu rentang nilai yang sudah diketahui dan pada prosesnya menentukan jumlah nilai yang nilainya lebih kecil dari elemen lain agar dapat menentukan posisi nilai tersebut. Proses Counting Sort ini terbilang efisien dan efektif serta prosesnya tidak memakan waktu lama.

Contoh Program Counting Sort :


#include <stdio.h>

int main()
{
    int L[20], temp, i, j, n=6, idx;
    printf("Masukkan 6 Element : \n");

    for(i=0; i<n; i++)
    {
        printf("Masukkan Bilangan : "); scanf("%d", &L[i]);
    }

    printf("\nSebelum di sorting : ");
    for(i=0; i<n; i++)
    {
        printf("%d ", L[i]);
    }

    for(i=0; i<(n-1); i++)
    {
        idx=i;
        for(j=i+1; j<n; j++)
        {
            if(L[j]<L[idx])
            {
                idx=j;
            }
        }
        temp=L[i];
        L[i]=L[idx];
        L[idx]=temp;
    }

    printf("\nSetelah Sorting : ");
    for(i=0; i<n; i++)
    {
        printf("%d ", L[i]);
    }
    printf("\n");
    return 0;
}

Counting Sort

Sumber :
- Modul Praktikum Alpro Telkom University
- Pengkajian Algoritma Pengurutan-Tanpa-Pembandingan Counting Sort dan Radix Sort, Dominikus Damas Putranto, NIM 13506060
- https://teknojurnal.com/pengertian-algoritma-bubble-sort/
- http://sisinform-aaf1231072.blogspot.co.id/2013/02/insertion-sort.html




Share this

Related Posts

Previous
Next Post »