shell排序
2016-03-05 16:42
761 查看
参考这篇文章http://blog.csdn.net/gulianchao/article/details/8581210
Shell排序也叫做希尔排序或者缩小增量排序,是DL. Shell于1959年针对直接插入排序算法改进提出的,属于插入排序的范畴,是对直接插入排序算法的改进。直接插入排序在基本有序时效率较高,并且在序列规模不是很大时效率也很高,Shell排序就是针对这两点进行改进。核心思想是:待排序列有n个元素,先取一个小于n的整数h1作为第一个增量,把待排序列以间隔h1分成若干子序列,子序列内使用插入排序;然后取第二个增量h2(< h1),重复上述的划分和排序,直至所取的增量hl = 1 (h1 > h2 > … > hl)。
这样不管序列多么庞大,在先前较大步长分组下每个子序列规模都不是很大,用直接插入效率很高;后面步长变小,子序列变大,但由于整体有序性越来越明显,排序效率依然很高,大大提高了时间效率。
插入排序代码
shell排序代码
Shell排序也叫做希尔排序或者缩小增量排序,是DL. Shell于1959年针对直接插入排序算法改进提出的,属于插入排序的范畴,是对直接插入排序算法的改进。直接插入排序在基本有序时效率较高,并且在序列规模不是很大时效率也很高,Shell排序就是针对这两点进行改进。核心思想是:待排序列有n个元素,先取一个小于n的整数h1作为第一个增量,把待排序列以间隔h1分成若干子序列,子序列内使用插入排序;然后取第二个增量h2(< h1),重复上述的划分和排序,直至所取的增量hl = 1 (h1 > h2 > … > hl)。
这样不管序列多么庞大,在先前较大步长分组下每个子序列规模都不是很大,用直接插入效率很高;后面步长变小,子序列变大,但由于整体有序性越来越明显,排序效率依然很高,大大提高了时间效率。
插入排序代码
#include<stdio.h> void InsertSort(int k[],int n){ int j = 0 ; for(int i=1;i<n;i++){ if(k[i]<k[i-1]){ int temp = k[i] ; for(j=i-1;k[j]>temp;j--){ k[j+1] = k[j] ; } k[j+1] = temp ; } } } int main(){ int i , a[10] = {5,2,6,0,3,9,1,7,4,8} ; InsertSort(a,10) ; printf("排序后的结果是: ") ; for(i=0;i<10;i++){ printf("%d ",a[i]) ; } printf("\n\n") ; return 0 ; }
shell排序代码
//5,2,6,0,3,9,1,7,4,8 //3, 4, 5, // 2, 8, 9 // 1 6 // 0 7 //3,2,1,0,4,8,6,7,5,9 //1, 3, 4, 5, 6, // 0, 2, 7, 8, 9 //1,0,3,2,4,7,5,8,6,9 //0,1,2,3,4,5,6,7,8,9 #include<stdio.h> void InsertSort(int k[],int n){ int j = 0 ; int gap = n ; do{ gap = gap/3 + 1 ; for(int i=gap;i<n;i++){ if(k[i]<k[i-gap]){ int temp = k[i] ; for(j=i-gap;k[j]>temp;j-=gap){ k[j+gap] = k[j] ; } k[j+gap] = temp ; } } }while(gap>1) ; } int main(){ int i , a[10] = {5,2,6,0,3,9,1,7,4,8} ; InsertSort(a,10) ; printf("排序后的结果是: ") ; for(i=0;i<10;i++){ printf("%d ",a[i]) ; } printf("\n\n") ; return 0 ; }
相关文章推荐
- 升级10.11后使用CocoaPod出现-bash: pod: command not found 解决办法
- 利用shell脚本重启node.js
- Linux基础--Bash的基本特性
- shell脚本编写汇集
- shell学习笔记
- xshell与虚拟机VMware中centos6.7系统突然连不上
- Python IDLE或shell中切换路径
- 手把手教你编写一个具有基本功能的shell(已开源)
- linux shell 取文件名后缀
- linux shell 编程笔记 - shell的输入与输出 -3- 标准输入-标准输出-标准错误
- HBase Shell常用命令
- bash特性
- 排序算法总结之快速排序、归并排序、shell排序
- 《懒人Shell脚本》之二——语料库的格式化输出
- linux shell 编程笔记 - shell的输入与输出 -2- read - cat - 管道
- linux shell 编程笔记 - shell的输入与输出 -1- echo命令
- linux shell 编程笔记 - 后台执行命令&
- Xshell 缺少 mfc110.dll
- shell编程(一):简单命令
- Linux系统运维/Bash/5-2