希尔排序(c语言)

Python015

希尔排序(c语言),第1张

void ShellSort(int r[],int n)//希尔排序

{

for(int gap=n/2gap>=1gap=gap/2)//以增量为d进行直接插入排序

{

CountCompare[1]++

for(int i=d+1i<=ni++)//将r[i]插入到所属的子序列

{

r[0]=r[i]//暂存被插入记录

CountMove[1]++

for(int j=i-dj>0&&r[0]<r[j]j=j-gap)

{

r[j+d]=r[j]//记录后移gap个位置,保证仍在同一个子序列

CountCompare[1]++

CountMove[1]++

}

r[j+gap]=r[0]

CountMove[1]++

}

for(int k=1k<=nk++)

cout<<r[i]<<" "

}

}

//主程序就麻烦自己写了

void main()

{

datatype R[MAXNUM]

int d[6]=[50,25,12,6,3,2,1]

for(int i=0i<MAXNUMi++)

scanf("%d",&R[i].key)

ShellSort(R,MAXNUM,d,6)

for(int i=0i<MAXNUMi++)

printf("%d",R[i].key)

}