排序算法(二)希尔排序
来源:互联网 发布:网络购物合同纠纷 编辑:程序博客网 时间:2024/06/04 19:02
希尔排序算法也称为缩小增量算法;
算法先将要排序的一组数按某个增量d分成若干组,每组中记录的下标相差d.对每组中全部元素进行排序,然后再用一个较小的增量对它进行分组,在每组中再进行排序。当增量减到1时,整个要排序的数被分成一组,直接按照直接插入排序,排序完成。
代码实现:
//shell(希尔)排序——多次利用直接插入排序//一趟希尔过程static void Shell(int *arr,int len,int gap)//gap,组数或间隔,间隔是几,就是几组{ //跟直接插入排序非常相似 int tmp; int i; int j; for(i=gap;i<len;i++) { tmp=arr[i]; for(j=i-gap;j>=0;j-=gap)//从后往前找位置 { if(arr[j]<=tmp) { break; } else { arr[j+gap]=arr[j];//移数据 } } arr[j+gap]=tmp;//放数据 }}void ShellSort(int *arr,int len){ int d[]={5,3,1};//gap for(int i=0;i<sizeof(d)/sizeof(d[0]);i++) { Shell(arr,len,d[i]); }}void Show(int *arr,int len){ for(int i=0;i<len;i++) { printf("%d ",arr[i]); } printf("\n");}int main(){ int arr[]={32,2,65,234,76,33,35,66,2,65,3,2,8,33,11}; ShellSort(arr,sizeof(arr)/sizeof(arr[0])); Show(arr,sizeof(arr)/sizeof(arr[0])); return 0;}
输出结果:32 2 65 2 2 2 2 2 2 65 2 2 8 33 11
阅读全文
0 0
- 排序算法(二):希尔排序
- 八大排序算法(二)希尔排序
- 排序算法(二):希尔排序
- 排序算法 -- (二)希尔排序
- 排序算法(二)---- 希尔排序
- 排序算法(二)希尔排序
- 排序算法(二)希尔排序
- 排序算法二(归并排序、快速排序、希尔排序)
- 排序算法(二):希尔排序(最小增量排序)
- 常见排序算法整理(二)----希尔排序,选择排序
- 八大排序算法之(二)插入排序 希尔排序
- 【十六】排序算法(二)--希尔排序算法
- 排序(二):希尔排序
- 排序(二)----希尔排序
- 排序:希尔排序(算法)
- C语言--------排序算法---------希尔排序(二)
- 八大排序算法之二希尔排序(C语言)
- 排序算法(二)——希尔排序
- html框架--frameset
- golang -strings库笔记
- 旅行 The Trip, 2007 UVA
- 51nod 1487 占领资源(RMQ+暴力)
- DetachedCriteria详细使用
- 排序算法(二)希尔排序
- 在mybatis的sqlMapper中使用Ognl判断动态sql语句
- javaWeb注册,登陆,退出、记住用户名和密码
- 今日头条2017秋招笔试编程题
- Hadoop 相关问题汇总
- 编程心法
- Servlet生命周期
- 14javaSocket应用(慕课笔记)
- Linux下的epoll