希尔排序

来源:互联网 发布:centos搭建邮箱服务器 编辑:程序博客网 时间:2024/05/29 02:54

       希尔排序是插入排序的优化,因为插入排序适合用于大部分数据已经排序好了的序列,不是稳定排序,任何情况下的时间复杂度为o(n^1.5),只需一个额外辅助空间o(1)。排序的原则是将数据划分成特定间隔的几个子集,以插入排序法排完子集内的数据后再渐渐减少间隔距离。

#include<iostream>#include<stdlib.h>using namespace std;void xier(int num[],int len){for(int m=len/2;m>0;m--)//间隔距离逐渐减少{for(int i=0;i<len;i++)//依次插入待排序中的值{int j;int key=num[i];//将待排数值设为定值,以免后面移动时出错for(j=i-m;j>=0&&key<num[j];j=j-m)//以m为间隔,比较属于同一组的数据num[j+m]=num[j];num[j+m]=key;}}}int main(){int len=5;int num[5];for(int i=0;i<5;i++)cin>>num[i];xier(num,len);for(int i=0;i<5;i++)cout<<num[i];system("pause");return 0;}


0 0
原创粉丝点击