/*
时间:2017/8/8
地点:工程北629
功能:排序
思想:shell排序算法
*/
#include<stdio.h>
void shellsort(int v[], int n) //shell排序算法,将v[]按照升序排列
{
int gap, i, j, temp;
for(gap = n/2; gap > 0; gap /= 2) //完成大循环
{
for(i = gap; i < n; i++)
for(j = i - gap; j >= 0 && v[j] > v[j+gap]; j -= gap)
{
temp = v[j];
v[j] = v[j+gap];
v[j+gap] = temp;
}
}
}
int main()
{
int a[]={8, 2, 6, 5, -4, 9, 7};
int n=sizeof(a)/sizeof(int);
int i;
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
shellsort(a, n);
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
/*
在Vc++6.0中的输出结果是:
----------------------------
8 2 6 5 -4 9 7
-4 2 5 6 7 8 9
Press any key to continue
----------------------------
总结:尝试试数以理解
*/
shell算法的使用
最新推荐文章于 2022-09-24 14:35:50 发布