希尔排序

来源:互联网 发布:淘宝产品市场调查表 编辑:程序博客网 时间:2024/05/20 23:04

                                  希尔排序

1 、代码如下:
#include<iostream>using namespace std;void ShellInsert(int a[],int dk,int length);void ShellSort(int a[],int dt[],int t,int length);void print(int a[],int length);int main(){//int a[10]={49,38,65,97,76,13,27,49,55,04};int a[16]={49,38,65,97,76,13,27,49,55,04,88,33,22,2,3,2};int dt[4]={7,5,3,1}; print(a,16); ShellSort(a,dt,4,16); cout<<"the result :"<<endl; print(a,16);return 0;}void print(int a[],int length){    for(int i=0;i<length;i++)    {     cout<<a[i]<<" ";    }    cout<<endl;}/*** length:数组的长度* dk    :增量**/void ShellInsert(int a[],int dk,int length){for(int i=dk;i<length;i++){  //发现该元素小于前一个增量位置的元素   if(a[i]<a[i-dk])   {       int tmp=a[i];       int j;       for(j=i-dk;j>=0&&tmp<a[j];j-=dk)       {           a[j+dk]=a[j];       }       a[j+dk]=tmp;   }}}/** dt[i]:建议为dt[i]=2^(t-i+1)-1即(t为趟数)*/void ShellSort(int a[],int dt[],int t,int length){    for(int i=0;i<t;i++)    {        ShellInsert(a,dt[i],length);        cout<<"the "<<i+1 <<" trip..."<<endl;        print(a,length);    }}
2、编译结果:


原创粉丝点击