时间复杂度O(n2),空间复杂度O(1)
不稳定
#include<iostream>
using namespace std;
//希尔排序
void ShellSort(int *num, int len){
int dk,i,j;
for(dk=len/2; dk>=1; dk/=2){
for(i=dk; i<len; i++){
if(num[i]<num[i-dk]){
int temp=num[i];
for(j=i-dk;j>=0&&num[j]>temp;j-=dk)
num[j+dk]=num[j];
num[j+dk]=temp;
}
}
}
}
int main(){
int num[10]={2,3,9,4,1,6,4,9,1,9};
ShellSort(num,10);
for(int i=0; i<10; i++)
cout<<num[i]<<" ";
cout<<endl;
return 0;
}