博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
排序-shell排序
阅读量:5281 次
发布时间:2019-06-14

本文共 772 字,大约阅读时间需要 2 分钟。

在插入排序中,所有的元素都是挨个和前一个元素进行比较,并置换位置。所以交换的次数为N的平方级别。极端情况下,如果最小元素在最右侧,那么需要逐个和前面元素进行置换。如果将比较的间隔增大,那么会减少移动次数,然后逐次降低比较间隔。

于是比较的间隔的序列如下 h = 3*h+1。

代码如下:

1 #include 
2 3 using namespace std; 4 5 void change(int *p,int pos1,int pos2); 6 void shellSort(int *p,int length); 7 void print(int *p,int length); 8 9 int main()10 {11 int p[] = {
2,5,3,11,89,76,24,33,15};12 shellSort(p,sizeof(p)/sizeof(int));13 print(p,sizeof(p)/sizeof(int));14 cout << "Hello world!" << endl;15 return 0;16 }17 18 void print(int *p,int length)19 {20 for(int i=0;i
=1)32 {33 for(int i=1;i
=h&&p[j]

目前要理解shell 排序的性能仍然是个挑战,这个需要靠专家努力,但最重要的结论就是,运行时间不到N的平方级别。

转载于:https://www.cnblogs.com/lucy-lizhi/p/7389191.html

你可能感兴趣的文章
CF1215E Marbles
查看>>
BZOJ2339 HNOI2011卡农(动态规划+组合数学)
查看>>
octave基本操作
查看>>
axure学习点
查看>>
WPF文本框只允许输入数字[转]
查看>>
dom4j 通用解析器,解析成List<Map<String,Object>>
查看>>
第一个项目--用bootstrap实现美工设计的首页
查看>>
使用XML传递数据
查看>>
TYVJ.1864.[Poetize I]守卫者的挑战(概率DP)
查看>>
0925 韩顺平java视频
查看>>
iOS-程序启动原理和UIApplication
查看>>
mysql 8.0 zip包安装
查看>>
awk 统计
查看>>
模板设计模式的应用
查看>>
实训第五天
查看>>
平台维护流程
查看>>
2012暑期川西旅游之总结
查看>>
12010 解密QQ号(队列)
查看>>
2014年辛星完全解读Javascript第一节
查看>>
装配SpringBean(一)--依赖注入
查看>>