菜鸟一枚,
刚刚学习数据结构与算法,
为了加深理解,
所以与同学们分享学习过程。
今天学习的是,
希尔排序!!!
分组进行直接插入排序,
分组间隔越来越小
#include <stdio.h>
void insertsort(int k[],int n)
{
int i,j,temp,gap;
do
{
gap = gap/3+1;
for(i=gap;i<n;i++)
{
if(k[i]<k[i-gap])
{
temp=k[i];
for(j = i-gap;k[j] > temp;j-=gap) //若j前面的数大于temp
{
k[j+gap] = k[j]; //则往后推
}
k[j+gap]=temp; //此处j+1与for循环中的j+1不同,因为j--了
}
}
}while(gap>1);
}
int main()
{
int i,a[10]={4,3,6,1,0,8,7,2,9,5};
insertsort(a,10);
printf("排序后结果为:");
for(i=0;i<10;i++)
{
printf("%d",a[i]);
}
return 0;
}
谢谢同学们的阅读!!!