voidInsertSort(int arr[],int n){for(int i =0; i < n; i++){if(arr[i]< arr[i-1]){int cur = arr[i];int j = i -1;for(; cur < arr[j]; j--){
arr[j+1]= arr[j];}
arr[j+1]= cur;//注意要加一}}}
2.希尔排序
//希尔排序直接在插入排序上改进//对记录数少,基本有序的高效voidShellSort(int arr[],int n){for(int grp = n /2; grp >0; grp >>=1){for(int i = grp; i < n; i++){if(arr[i]< arr[i - grp]){int cur = arr[i];int j = i - grp;for(; cur < arr[j]; j -= grp){
arr[j + grp]= arr[j];}
arr[j + grp]= cur;}}}}
测试用例
voidmain(){int arr[100];int n =10;srand(int(time(0)));for(int i =0; i < n; i++){
arr[i]=rand()%1000;
std::cout << arr[i]<<" ";}
std::cout <<" "<< std::endl;ShellSort(arr, n);for(int i =0; i < n; i++)
std::cout << arr[i]<<" ";}