Algoritma
Shell Sort
Pada pengurutan data kita terlebih dahulu harus
membuat sub list – sub list yang di dasarkan pada jarak antar data yang di
tentukan. Jarak yang telah ditetukan biasanya di lambangakan dengan k, biasanya
jarak yang paling di gunakan pada sortingsn ini saat melakukan pengurutan data
yaitu k5, k3. dan k1. Artinya, dari data yang akan ditentukan atau ditukar
dengan data yang lain berjarak 5, 3 atau 1 data saja.
Kelebihan :
- Algoritma ini sangat rapat dan mudah untuk diimplementasikan.
- Operasi pertukarannya hanya dilakukan sekali saja.
- Waktu pengurutan dapat lebih ditekan.
- Mudah menggabungkannya kembali.
- Kompleksitas selection sort relatif lebih kecil.
Kekurangan :
- Membutuhkan method tambahan.
- Sulit untuk membagi masalah.
Contoh program
#include<stdio.h>
#include<conio.h>
int main()
{
int arr[30];
int i,j,k,tmp,num;
printf("Masukan Banyaknya
Elemen :");
scanf("%d", &num);
for(k=0; k<num; k++)
{
printf("\nMasukkan %d Nilai
: ",k+1);
scanf("%d",&arr[k]);
}
for(i=num/2; i>0; i=i/2)
{
for(j=i; j<num; j++)
{
for(k=j-i; k>=0; k=k-i)
{
if(arr[k+i]>=arr[k])
{
break;
}
else
{
tmp=arr[k];
arr[k]=arr[k+i];
arr[k+i]=tmp;
}
}
}
}
printf("\n**** Hasil Shell
Sort ****\n");
for(k=0; k<num; k++)
printf("%d\t",arr[k]);
getch();
return 0;
}