6.19.2010

Metode Sorting dengan Radix Sort

Radix Sort adalah metode sorting tanpa pembandingan dengan kata lain, sorting Non-Comparasion sort dimana dalam prosesnya tidak melakukan perbandingan antar data. Secara umum yang proses yang dilakukan dalam metode ini adalah mengklasifikasikan data sesuai dengan kategori terurut yang tertentu dan dalam tiap kategorinya dilakukan pengklasifikasian lagi dan seterusnya sesuai dengan kebutuhan. Dan kemudian subkategori-subkategori tersebut digabungkan kembali, yang secara dilakukan hanya dengan metode sederhana concatenation.

Apa itu Radix Sort??? Radix Sort merupakan algoritma pengurutan yang ajaib yang mana mengatur pengurutan nilainya tanpa melakukan beberapa perbandingan pada data yang dimasukkan. Kata radix bermakna harafiah posisi dalam angka [1]. Di mana sederhananya, dalam representasi desimal, radix adalah digitnya. Dalam implementasinya, Radix Sort merupakan algoritma pengurutan yang cepat, mudah, dan sangat efektif. Namun banyak orang yang berpikir bahwa algoritma ini memiliki banyak batasan di mana untuk kasus-kasus tertentu tidak dapat dilakukan dengan algoritma ini, seperti pengurutan bilangan pecahan dan bilangan negatif,

Berdasarkan urutan pemrosesan radixnya, Radix Sort terbagi 2 macam, yaitu: LSD (Least Significant Digit), di mana pemrosesan dimulai dari radix yang paling tidak signifikan. dan MSD (Most Significant Digit), di mana pemrosesan dimulai dari radix yang paling signifikan.

Proses dasar Radix Sort adalah mengkategorikan data-data menjadi subkumpulan-subkumpulan data sesuai dengan nilai radix-nya, mengkonkatenasinya, kemudian mengkategorikannya kembali berdasar nilai radix lainnya.

Dibawah ini adalah syntax Radix Sort:

#include
#include
main()
{
int a, b, leng, data[100], d, m, temp[100], index;

printf("Banyak data : ");
scanf("%d",&leng);

for (a=0;a
{
printf("data %d = ",a+1);
scanf("%d",&d);
if (d<1000) { data[a]=d; } else a--; } printf("\nData Anda: "); for (a=0;a { printf("\nData %d= %d ",a+1,data[a]); } index=0; for (a=0;a<=9;a++) //lsb sort for (b=0;b { if (data[b]<100) { m=data[b]%10; } else { m=data[b]%100; m=m%10; } if (m==a) { temp[index]=data[b]; index++; } } for (a=0;a<=9;a++) { data[a]=temp[a]; } index=0; for (a=0;a<=9;a++) //csb sort for (b=0;b { if (data[b]<100) { m=data[b]/10; } else { m=data[b]%100; m=m/10; } if (m==a) { temp[index]=data[b]; index++; } } for (a=0;a<=9;a++) { data[a]=temp[a]; } index=0; for (a=0;a<=9;a++) //msb sort for (b=0;b { m=data[b]/100; if (m==a) { temp[index]=data[b]; index++; } } for (a=0;a<=9;a++) { data[a]=temp[a]; } printf("\n\nSetelah di Sorting\n"); for (a=0;a<(leng);a++) { printf("%d",data[a]); printf("\n"); } } SEMANGAT !!!

Tidak ada komentar:

Posting Komentar