标签:size int 希尔 increment 增量 array 排序 Shellsort
思路:
希尔排序又称缩小增量排序(diminishing increment sort),
首先选择一个增量序列(increment sequence),,其中,,
按增量序列的个数 t ,执行 t 趟排序;
对于每一趟排序,将 中的每一个位置i,把其上的元素放到中间的正确位置上,可以看出,对于一趟增量的排序,就是对个独立的子数组执行一次插入排序。
希尔排序一般的增量序列是,
时间复杂度:
平均,;最好, ;最坏 , (取决于选择的增量序列)
程序:
void shell_sort(int array[],int array_size)
{
int increment,i,j,tmp;
for(increment=array_size/2;increment>0;increment/=2)
{
for(i=increment;i<array_size;i++)
{
tmp=array[i];
for(j=i;j-increment>=0 && tmp<array[j-increment];j-=increment)
{
array[j]=array[j-increment];
}
array[j]=tmp;
}
}
}
#include <stdio.h>
int main()
{
int i;
int array[]={100,96,88,75,63,52,41,36,28,19,6,0,-19,-105};
int array_size=sizeof(array)/sizeof(int);
printf("Original array:\n");
for(i=0;i<array_size;i++)
printf(" %d, ",array[i]);
printf("\n");
shell_sort(array,array_size);
printf("Sorted array:\n");
for(i=0;i<array_size;i++)
printf(" %d, ",array[i]);
printf("\n");
return 0;
}
参考:
https://www.runoob.com/w3cnote/shell-sort.html
标签:size,int,希尔,increment,增量,array,排序,Shellsort 来源: https://blog.csdn.net/abcdu1/article/details/117478191
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。