/*
Author:Albert Tesla Wizard
TIme:2020/11/22 15:07
*/
#include<bits/stdc++.h>
#define MAXSIZE 1000
using namespace std;
struct Sqlist
{
int* elem;
int length;
};
int create(Sqlist&L,int a[],int n)
{
L.elem=new int[MAXSIZE];
L.length=0;
for(int i=0;i<n;i++){
L.elem[i+1]=a[i];L.length++;}
}
void print(Sqlist L)
{
for(int i=1;i<=L.length;i++)cout<<L.elem[i]<<" ";
cout<<'\n';
}
int ShellInsert(Sqlist&L,int dk)
{
int i,j;
for(i=dk+1;i<=L.length;i++)
{
if(L.elem[i]<L.elem[i-dk])
{
L.elem[0]=L.elem[i];
for(j=i-dk;j>0&&L.elem[0]<L.elem[j];j-=dk)
{
L.elem[j+dk]=L.elem[j];
}
L.elem[j+dk]=L.elem[0];
}
}
}
int ShellSort(Sqlist&L,int dk[],int t)
{
for(int i=0;i<t;i++)ShellInsert(L,dk[i]);
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
Sqlist L;
int a[11]={
4,5,2,1,3,9,6,7,8,11,10};
int dk[3]={
5,3,1};
create(L,a,11);
print(L);
ShellSort(L,dk,3);
print(L);
return 0;
}
Sequence table implements ShellSort
Guess you like
Origin blog.csdn.net/AlberTesla/article/details/109954359
Ranking