希尔排序-c++

来源:互联网 发布:wwe2k15优化补丁 编辑:程序博客网 时间:2024/06/06 15:02

希尔排序(最后一步进行的是直接插入排序)

:以多个不同增量进行多次插入排序,增量不断减少,直至为1,进行直接插入排序

:经验gap=length/2;

#include<iostream>#include<string>using namespace std;void ShellSort(int *pdata,int length){int gap=length/2;int key;while(gap>=1){for (int i=gap;i<length;i++)  {key=pdata[i];//保存后半段要插入的数据int j=i-gap;for (j;pdata[j]>key&&j>=0;j-=gap) //在前半段中,大的数据分别向后移动{pdata[j+gap]=pdata[j];   //没间隔gap为一组}pdata[j+gap]=key;//插入keycout<<"the "<<i<<"round:"<<endl;for(int i=0;i<length;i++)cout<<pdata[i];cout<<endl;}gap=gap/2;}}int main(){int data[]={6,5,4,3,2,1};int data2[]={1,2,3,4,5,6};int data3[]={9,8,7,6,5,4,3,2,1};cout<<"----------------------------------"<<endl;ShellSort(data3,9);return 0;}

理解倒不难,程序编起来感觉有点困难。

0 0