直接插入排序是将一个记录插入到已排好序的有序表中,从而得到一个记录数加一的有序表。
#include<iostream>
#include<stdlib.h>
using namespace std;
//直接插入排序算法
void insertSort(int arr[], int len){
for (int i = 1; i < len; ++i){
if (arr[i] < arr[i - 1]){//如果后面数字比前面数字小
int curVal = arr[i];//复制为哨兵
int curIndex = i;//记录哨兵的位置
while (curIndex>0){
if (curVal < arr[curIndex-1]){
arr[curIndex] = arr[curIndex - 1];//记录后移
}
else break;
--curIndex;//哨兵前移,从后往前搜索
}
arr[curIndex] = curVal;//插入到正确的位置
}
}
}
int main(){
int arr[10] = { 4, 2, 3, 1, 0, 8, 9, 7, 6, 5 };
int len = sizeof(arr) / sizeof(arr[0]);
insertSort(arr, len);
for (int i = 0; i < len; i++){
cout << arr[i] << endl;
}
return 0;
}