Shell排序算法及C语言实现
来源:互联网 发布:淘宝网旋转拖把杆 编辑:程序博客网 时间:2024/05/25 16:38
Shell排序算法是D.L.Shell于1959年发明的,其基本思想是:先比较距离远的元素,而不是像简单交换排序算法那样先比较相邻的元素。这样可以快速减少大量的无序情况,从而减轻后续的工作。被比较的元素之间的距离逐步减少,直到减少为1,这时排序变成了相邻元素的互换。该方法实质上是一种分组插入排序方法。
先贴代码。
/*shellsort函数:按递增顺序对v[n]数组进行排序*/void shellsort(int v[],int n){
int gap,i,j,temp; //gap为比较的间隔,从n/2开始,一直到1 for (gap = n/2;gap > 0;gap /= 2) for (i = gap;i < n;i++) for (j = i-gap;j >= 0 && v[j] > v[j+gap];j -= gap) { temp = v[j]; v[j] = v[j+gap]; v[j+gap] = temp; }}
以v[10]={49,38,65,97,76,13,27,49,55,4}为例,
第一个外循环,gap=5,分别比较(v[0],v[5]),(v[1],v[6]),(v[2],v[7]),(v[3],v[8]),(v[4],v[9]),结果为{13,27,49,55,4,49,38,65,97,76}。
第二个外循环,gap=2,分别比较(v[0],v[2],v[4],v[6],v[8]),(v[0],v[2],v[4],v[6],v[8]),即分别对其进行插入排序,结果为{4,27,13,49,38,55,49,65,97,76}。
第三个外循环,gap=1,结果为{4,13,27,38,49,49,55,65,76,97}。
0 0
- Shell排序算法及C语言实现
- 堆排序算法及C语言实现
- C语言SHELL排序算法
- 常见排序算法总结及C语言实现
- 双向冒泡排序算法思想及C语言实现
- 快速排序算法思想及C语言实现
- 选择排序算法思想及C语言实现
- 排序算法原理简述及C语言实现
- 常见的排序算法对比及实现C语言版本
- 九大排序算法-C语言实现及详解
- 九大排序算法-c语言实现及详解
- 九大排序算法-C语言实现及详解
- C语言写的Shell排序算法。
- c语言数组--Shell排序算法
- 算法 c语言 shell希尔排序
- 排序算法(C语言实现)
- C语言排序算法实现
- 排序算法--C语言实现
- 导航控制器返回上级界面时,通过属性传值
- static nested class 内部类 匿名内部类
- 黑马程序员--Java基础--String类
- TCP/IP详解卷1:第六章(ICMP:internet控制报文协议)
- 项目一 利用循环求和 do while 语句
- Shell排序算法及C语言实现
- 用opencv的traincascade.exe训练行人的HAAR、LBP和HOG特征的xml文件,并对分类器进行加载和检测
- Android-Service组件
- 三种遍历树的算法
- Spring mvc项目的异常报告
- Android随笔(一)——Activity的四种启动方式
- Add Binary leetcode
- tomcat部署web项目
- android软键盘弹出,会把原来的界面挤上去的问题 处理方法