排序算法之shell排序
2016-03-02 10:01
351 查看
基本思想
设初始序列有n个元素,选定一个小于n大于或等于1的整数gap作为间隔,将全部元素分成gap个子序列,所有距离为gap的元素放在同一个子序列中,在每个子序列中分别采用直接插入算法进行排序;然后缩小间隔gap,如令gap=gap/2,重复上面的子序列划分和子序列排序动作;直到最后去gap=1,将所有的元素放到一个序列中为止。
简单示例
初始序列:21 25 49 25 16 8
第一步:
第二步:
第三步:
设初始序列有n个元素,选定一个小于n大于或等于1的整数gap作为间隔,将全部元素分成gap个子序列,所有距离为gap的元素放在同一个子序列中,在每个子序列中分别采用直接插入算法进行排序;然后缩小间隔gap,如令gap=gap/2,重复上面的子序列划分和子序列排序动作;直到最后去gap=1,将所有的元素放到一个序列中为止。
简单示例
初始序列:21 25 49 25 16 8
第一步:
第二步:
第三步:
void shellsort3(int a[], int n) { if(n<=1||a==NULL) return; int i, j, gap; for (gap = n / 2; gap > 0; gap /= 2) for (i = gap; i < n; i++) for (j = i - gap; j >= 0 && a[j] > a[j + gap]; j -= gap) Swap(a[j], a[j + gap]); }
相关文章推荐
- PowerShell 抓取网络日志
- PowerShell 抓取网络日志
- Linux shell script
- 学习心得之bash script
- shell 编程光速入门与实战
- Ad Hoc Distributed Queries / xp_cmdshell 的启用与关闭
- shell变量
- 鸟哥的Linux私房菜-----10、学习Bash
- Query in Java as in Mongo shell 【Jongo】
- Linux学习笔记:shell的初次使用
- powershell 生成随机用户信息
- shell读取文件的方法
- PowerShell图形化编程2-快速入门
- bash的基本功能(重定向、管道符、通配符)
- 运维日志排查常用shell
- Shell入门——shell特性、变量
- shell脚本手记
- Reference for shell scripting
- Linux下Shell脚本执行PHP报错:Could not open input file
- 使用xshell远程登录ubuntu使用vi编辑不能使用删除键方向键