希尔排序
希尔排序,就是改进版的插入排序…
#include<bits/stdc++.h>
using namespace std ;
void Shell_Sort(int a[],int n){
int i ,j , d ;
for(d = n / 2 ;d >=1 ; d /= 2 ){
for(i = d + 1 ;i <= n ;i++ ){
if(a[i] < a[i-d]){//后面的小,要换到前面去
a[0] = a[i] ;
for(j = i-d ;j > 0 && a[j] > a[0] ;j-=d ){
a[j+d] = a[j] ;
}
a[j+d] = a[0] ;//确定好位置
}
}
}
}
void Print(int a[],int n){//打印
for(int i = 1 ;i<= n ;i++ ){
cout << a[i] <<" ";
}
cout << endl;
}
int main(){
int a[] = {0,1,3,2,9,5,6,7,4,8};//0没用,个人习惯排序都是从下标为1开始
cout << "待排序序列:" ;
Print(a, sizeof(a)/4 -1 );
Shell_Sort(a, sizeof(a)/4 -1);
Print(a, sizeof(a)/4 -1 );
return 0;
}