算法复习之希尔排序
2015-07-09 10:18
295 查看
#include<iostream> void prin(int* list,int len) { for(int i = 0 ;i<len ;++len) std::cout<<list[i]<<" " <<std::endl; } /* *希尔排序 *list:待排序的数组,len:待排序数组的长度 *时间复杂度:O(nlgn) * 希尔排序是按照不同步长对元素进行插入排序,当刚开始元素很无序的时候, * 步长最大,所以插入排序的元素个数很少,速度很快; * 当元素基本有序了,步长很小,插入排序对于有序的序列效率很高。 * 所以,希尔排序的时间复杂度会比o(n^2)好一些。 */ void shellSort(int *list,int len) { int i,j,group,temp ; for(group = len/2;group >=1 ;group/=2)//增量 { for(i = group ;i<len;++i)//分组排序 { temp = list[i] ;//待排序的元素 for(j = i-group;j>=0&& list[j]>temp;j-=group)//将无序的进行交换 { list[j+group] = list[j] ; } list[j+group] = temp ;//插入待排序的元素 } } prin(list,len) ; } int main() { int a[] = {5,8,2,4,9,0,1,6,7,3} ; shellSort(a,sizeof(a)/sizeof(int)); return 0 ; }
相关文章推荐
- Android入门(40)——第二章 使用LogCat方式调试程序
- 在Android Studio 和 Eclipse 的 git 插件操作 "代码提交"以及"代码冲突"
- Java设计模式之动态代理
- Uva11464 - Even Parity
- 给年轻程序员的几句话
- NetStatusEvent.info.code 备忘
- 纠结的连等赋值
- C语言实现将彩色BMP位图转化为二值图
- 手势滑动事件效果
- 论XCODE工程里使用的宏定义.
- win7配置go环境
- 黑马程序员——C语言基础---复杂数据类型(数组,字符串)
- vmware安装ghost xp
- struts2中action接收参数的3种方法
- iOS中,在类的源文件(.m)中,@interface部分的作用?
- some list operation(#quote from MIT 'introduction to computation and programming using python, Revis
- Hibernate的generator属性
- Core Data
- hdu1181 变形课(vector容器+dfs)
- IOS/MAC环境下thrift的安装