void shellSort(int arr[],int len);
int main() //程序入口,主函数,从这里开始执行
{
int i;
int len;
int arr[]={8,4,5,4,1,4,4,5,9};
len = sizeof(arr)/sizeof(int);
shellSort(arr,len);
for(i=0;i<len;i++)
{
printf("%d ",arr[i]);
}
}
void shellSort(int arr[],int len)//希尔排序
{
int j,i,t;
int gap = len/2;//间隔初始长度
while(gap>=1)
{
//分组做直接插入
for(i=gap;i<len;i++)
{
t = arr[i];//记录每一组无序区的值
j = i-gap;//有序区的值
while(arr[j]>t&&j>=0)
{
arr[j+gap]=arr[j];//后移
j = j-gap;//下一个有序3
}
arr[j+gap] = t;//如果无序曲大于有序去讲t放在比他小的元素后面
}
gap = gap/2;//下一次的间隔
}
}
c++希尔排序
最新推荐文章于 2023-12-12 15:15:48 发布