您的位置:首页 > 运维架构 > Shell

希尔排序 shell sort

2013-05-23 22:25 447 查看
#include <stdio.h>

void shell_sort(int a[], int size);

int main()
{
int i;
int a[10] = {6,8,4,3,9,1,5,2,10,7};

shell_sort(a,10);

for (i=0; i<=9; i++)
{
printf("%d ", a[i]);
}
printf("\n");
return 0;
}

void shell_sort(int a[], int size)
{
int d,i,j;
int temp;
d=1;
for( d=size/2; d>=1; d=d/2)
{
//间隔为d的元素排序,比如d=3
//将下标为0,3,6,9...的元素排好序
//将下标为1,4,7,10...的元素排好序
//将下标为2,5,8.....的元素排好序
for(i=d; i<size; i++)
{
for(j=i; j>=d; j=j-d)
{
if( a[j]<a[j-d] )
{
temp = a[j];
a[j] = a[j-d];
a[j-d]=temp;
}
else
break;
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: