People Innovation Excellence
 

Counting Sort

Counting sort merupakan sebuah teknik pengurutan dengan cara menghitung jumlah kemunculan dari setiap data yang berada di dalam array.  Pada algorithma ini kita harus membuat sebuah array penampung untuk menyimpan jumlah kemunculan data dimana ukuran dari array tersebut harus sejumlah range angka yang bisa di input oleh user. Algorithma ini dapat mengurutkan data dari besar ke kecil (Ascending) dan kecil ke besar (Descending). Algoritma ini tidak cocok untuk set data dengan jumlah besar karena kompleksitas dari algorithma ini adalah Ο(n+r) di mana n adalah jumlah item dan r adalah jarak dari inputan.

Berikut gambaran dari implementasi Counting Sort:

Diketahui int arr[] = {5, 2, 3, 4, 1, 5, 6}. Misalkan kita hanya memiliki angka dengan range 0 – 10. Pertama-tama kita harus mempersiapkan sebuah array untuk untuk menyimpan jumlah data dalam array yang disebut int count[11] = {0}, maka akan membentuk array sebagai berikut:

total 0 0 0 0 0 0 0 0 0 0 0
index 0 1 2 3 4 5 6 7 8 9 10

1st Cycle:

(5, 2, 3, 4, 1, 5, 6) ->count[5]++;

total 0 0 0 0 0 1 0 0 0 0 0
index 0 1 2 3 4 5 6 7 8 9 10

 

2nd Cycle:

(5, 2, 3, 4, 1, 5, 6) ->count[2]++;

total 0 0 1 0 0 1 0 0 0 0 0
index 0 1 2 3 4 5 6 7 8 9 10

3rd Cycle:

(5, 2, 3, 4, 1, 5, 6) ->count[3]++;

total 0 0 1 1 0 1 0 0 0 0 0
index 0 1 2 3 4 5 6 7 8 9 10

4th Cycle:

(5, 2, 3, 4, 1, 5, 6) ->count[4]++;

total 0 0 1 1 1 1 0 0 0 0 0
index 0 1 2 3 4 5 6 7 8 9 10

5th Cycle:

(5, 2, 3, 4, 1, 5, 6) ->count[1]++;

total 0 1 1 1 1 1 0 0 0 0 0
index 0 1 2 3 4 5 6 7 8 9 10

6th Cycle:

(5, 2, 3, 4, 1, 5, 6) ->count[5]++;

total 0 1 1 1 1 2 0 0 0 0 0
index 0 1 2 3 4 5 6 7 8 9 10

7th Cycle:

(5, 2, 3, 4, 1, 5, 6) ->count[6]++;

total 0 1 1 1 1 2 1 0 0 0 0
index 0 1 2 3 4 5 6 7 8 9 10

Pada looping yang terakhir, kita sudah mendapatkan jumlah kemunculan dari setiap angka. Kita tinggal membuat sebuah looping untuk mengcheck apakah array untuk setiap nilai tersebut nilainya 0, jika tidak maka cetak angka data array tersebut.Output yang akan dihasilkan dari counting sort sebagi berikut: 1, 2, 3, 4, 5, 5, 6.

Berikut implementasi dari Counting Sort menggunakan Bahasa C:

#include <stdio.h>

 

int main()

{

int arr[]={5, 2, 3, 4, 1, 5, 6};

int n = sizeof(arr)/sizeof(int);

int count[11];

 

for(int i=0;i<=10;i++){ //inisialisasinilaiawal count

count[i]=0;

}

 

for(int i=0;i<n;i++){ //counting sort

count[arr[i]]++;

}

 

for(int i=0;i<=10;i++){

while(count[i]!=0){

printf(“%d “,i);

count[i]–;

}

}

 

return 0;

}

Reference:

https://www.geeksforgeeks.org/counting-sort/


Published at :
Written By
Fidelson Tanzil, S.Kom., M.T.I
Subject Content Coordinator - Basic Programming | School of Computer Science

Periksa Browser Anda

Check Your Browser

Situs ini tidak lagi mendukung penggunaan browser dengan teknologi tertinggal.

Apabila Anda melihat pesan ini, berarti Anda masih menggunakan browser Internet Explorer seri 8 / 7 / 6 / ...

Sebagai informasi, browser yang anda gunakan ini tidaklah aman dan tidak dapat menampilkan teknologi CSS terakhir yang dapat membuat sebuah situs tampil lebih baik. Bahkan Microsoft sebagai pembuatnya, telah merekomendasikan agar menggunakan browser yang lebih modern.

Untuk tampilan yang lebih baik, gunakan salah satu browser berikut. Download dan Install, seluruhnya gratis untuk digunakan.

We're Moving Forward.

This Site Is No Longer Supporting Out-of Date Browser.

If you are viewing this message, it means that you are currently using Internet Explorer 8 / 7 / 6 / below to access this site. FYI, it is unsafe and unable to render the latest CSS improvements. Even Microsoft, its creator, wants you to install more modern browser.

Best viewed with one of these browser instead. It is totally free.

  1. Google Chrome
  2. Mozilla Firefox
  3. Opera
  4. Internet Explorer 9
Close