#include <iostream>
using namespace std;
int main()
{
int arr[] = {0, 9, 1, 5, 8, 3, 7, 4, 6, 2};
int n = sizeof(arr) / sizeof(*arr);
int i, j;
int increment = n;
do
{
increment = increment / 3 + 1; //增量序列
for(i=increment+1; i<n; i++)
{
if(arr[i]<arr[i-increment])
{ //需将arr[i]插入有序增量子表
arr[0] = arr[i];
for(j=i-increment; j>0 && arr[0]<arr[j]; j-=increment)
arr[j+increment] = arr[j]; //记录后移,查找插入位置
arr[j+increment] = arr[0]; //插入
}
}
}
while(increment>1);
for(i=1; i<n; i++)
{
cout << arr[i] << " ";
}
return 0;
}
希尔排序shell
最新推荐文章于 2022-08-08 12:54:18 发布