希尔排序
来源:互联网 发布:淘宝卖家认证复核 编辑:程序博客网 时间:2024/05/16 04:20
#include<stdio.h>//在没看懂希尔排序之前我觉得这是什么代码啊,真心难懂,后来看懂过程后,发现就是简单直接插入排序的优化(看懂随手编~~) int main() { int a[100]; int i,j,k,n,gap,temp; printf("请输入数组长度\n"); scanf("%d",&n); printf("请输入数组元素\n"); for (i=0;i<n;i++) scanf("%d",&a[i]);//因为希尔排序是跳跃性的排序,所以需要先保存下每个元素(而不能像之前插入排序边读入边插入) for (gap=n/2;gap>0;gap=gap/2) { for (i=0;i<gap;i++)//(这里要理解)因为每个待排序的小组有gap个,这意味着什么,每个小数组的开头分别是0~gap-1(而不是简单直接插入排序的0) { for (j=i+gap;j<n;j=j+gap)//每个小数组的下一个元素怎么找,就是+gap,(其实就是将+1换成了+gap),同样注意每个小数组第一个数已经有序(所以从数组第二个开始) { temp=a[j]; for (k=j-gap;k>=0&&a[k]>temp;k=k-gap)//每个小数组进行简单插入排序 a[k+gap]=a[k]; a[k+gap]=temp; }//我们想象一下这段程序是干嘛的,先是确定每个小数组开头,然后每个小组进行简单插入排序,接下来再换一个小组开头 }//而所有这一切又是属于同一个gap的,这样括号的位置也容易理解了~~ } for (i=0;i<n;i++) printf("%d ",a[i]); return 0; }
0 0
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- [CodeForces550C]Divisibility by Eight[数学]
- Java IO流 字节流与字符流
- 安装CouchDB
- Comet:基于 HTTP 长连接的“服务器推”技术
- C++ 13.2 类赋值操作符----定义该类型对象赋值时会发生什么(有不懂)
- 希尔排序
- java 使用 comet4j 主动向客户端推送信息 简单例子
- Android视图切换库的使用之SwitchLayout的用法及实际应用案例
- ConcurrentHashMap高并发性的实现原理
- 苹果/谷歌/浪潮之巅
- Couch的MapReduce查询
- 02-线性结构4. Pop Sequence(25)
- 黑马程序员-OC语言-ios第二天笔记总结
- Struts2开发遇到的问题之Could not find action or result