/**********************************
--修改时间: 2009.5.29
--修改人: 吴强
--修改原因: 从前写的程序不够规范
--输入要求: 无
***********************************/
#include
#define N 20
main()
{
int i;
int iArr[N]={2, 5, 4, 3, 6, 11, 23, 42, 13, 16,
32, 12, 31, 52, 34, 25, 42, 34, 22, 33};
void ShellSort(int iArr[]);
void ShellPass(int iArr[],int d);
ShellSort(iArr);
for (i=0;i< N;i++)
{
printf("%d,", iArr[i]);
}
}
void ShellSort(int iArr[])
{
int i=N;
do
{
i=i/3+1; /*为增量设定值*/
ShellPass(iArr, i);
}while (i>1);
}
void ShellPass(int iArr[],int d) /*d为增量*/
{
int i;
int j;
int k;
for (i=d+1;i< N;i++) /*隔d个元素做插入排序*/
{
if (iArr[i]< iArr[i-d])
{
k=iArr[i];
j=i-d;
while(j>0 && k< iArr[j])
{
iArr[j+d]=iArr[j];
j=j-d;
}
iArr[j+d]=k;
}
}
}
希尔Sort
最新推荐文章于 2025-05-20 09:47:07 发布
2445

被折叠的 条评论
为什么被折叠?



