Shell sort algoritması insertion sort’un üzerine kurulu bir algoritmadır. Neredeyse sıralı olan dizileri sıralamada tercih edilir. Eleman sayısının yarısı kadar bir ofset değeri atanır ve elemanlar ofset aralıklarıyla insertion sort ile sıralanır ve bu işlem artan adım değerleri için yapılır. Daha sonra ofset yarılanır. Ofset değeri 1 den küçük olduğunda algoritma durur.

Kaynak Kodlar:

#include <stdio.h>
#include <stdlib.h>
#define size 50

int main()
{
 int a[size];
 int step,i,offset ,temp, n;
 printf("Enter the number of elements: ");
 scanf("%d",&n);
 printf("\nEnter the array: ");
 for(i=0;i<n;i++){
 printf("\n%d. :",i);
 scanf("%d",&a[i]);
 }

 offset = n/2;
 while(offset>0)
 {
 for(step = offset; step< n; step++)
 {
 i=step-offset;
 while(i>=0 && a[i]>a[i+offset])
 {
 temp = a[i];
 a[i] = a[i+offset];
 a[i+offset] = temp;
 i-=offset;
 }
 }
 offset/=2;
 }

 printf("\nSorted Array: ");
 for(i=0;i<n;i++)
 printf("%d ",a[i]);

 system("pause");
 return 0;
}

Siz de yorum ekleyin

Arşivler
Meta