8547 Hill Sort

#include <iostream>
#include<bits/stdc++.h>
using namespace std;
void ShellInsert(int a[],int dt,int length){
    
    
int t,j;
for(int i=dt;i<length;i++)
    if(a[i]<a[i-dt]){
    
    
            t=a[i];
    for(j=i-dt;j>=0&&a[j]>t;j=j-dt)
        a[j+dt]=a[j];
    a[j+dt]=t;

    }



}
void ShellSort(int a[],int dt[],int t,int length){
    
    
    for(int i=0;i<t;i++){
    
    
        ShellInsert(a,dt[i],length);
    }
}


int main()
{
    
    

    int a[100];
     int dt[3]={
    
    5,3,1};
    int x,i=0;
    cin>>x;
    while(x){
    
    
        a[i++]=x;
        cin>>x;
    }
    ShellSort(a,dt,3,i);
    for(int j=0;j<=i-1;j++)
        cout<<a[j]<<" ";
    //cout << "Hello world!" << endl;
    return 0;
}

Guess you like

Origin blog.csdn.net/changbaishannefu/article/details/111648241