希尔排序
来源:互联网 发布:mac卸载 landesk 编辑:程序博客网 时间:2024/06/11 22:55
希尔排序是对简单插入排序进行了该进
先回顾一下插入排序
void insertsort(int *ARRAY,int size){ int temp; for(int i=1;i<size;i++){ temp=ARRAY[i]; int j=i; while(j>0&&temp<ARRAY[j-1]){ ARRAY[j]=ARRAY[j-1]; j--; } ARRAY[j]=temp; }}每次将一个元素插入到一个有序序列中的合适位置,这个有序序列初始情况为空。
插入排序每次跳跃长度为1,希尔排序通过在最外层增加一层循环来控制跳跃长度变化,使得局部有序减少运算,算法最优时间复杂度趋近O(nlogn),关于跳跃量的缩进和最佳效率似乎没有什么研究给出过具体答案。
代码:
#include<iostream>using namespace std;typedef int any;const int interval=10;any p[10000];void sheelsort(any *ARRAY,int size){ int k=size/interval; any temp; while(1){ for(int i=k;i<size;i+=k){ temp=ARRAY[i]; int j=i; while(j>=k&&temp<ARRAY[j-k]){ ARRAY[j]=ARRAY[j-k]; j-=k; } ARRAY[j]=temp; } if(k==1)break; else k=k/interval+1; //终止条件为跳跃量为1的时候,所以+1以保证一定会出现1 }}int main(){ for(int i=0;i<10000;i++)p[i]=rand(); sheelsort(p,10000); for(int i=0;i<10000;i++)cout<<p[i]<<endl;}
阅读全文
1 0
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 负载均衡服务器Nginx安装教程
- protobuf-java中的一些小技巧
- rails之自定义Rake任务
- VB文件系统编程中的input/line input,print和write语句相同点和区别
- 开放式授权OAuth
- 希尔排序
- 设计模式【传输对象模式TransferObjectPattern】
- C++高级编程 第十三章: 有效的内存管理
- 位运算
- iOS老铁,是时候干掉 iOS8 了!
- Java集合之ConcurrentHashMap源码浅析
- 贪心算法-4.6.1最小生成树之Prim算法(切分定理)
- codeforces 118A String Task
- 利用caffe的Python接口生成prototxt文件