点击查看代码
//Insertion sort
#include<iostream>
using namespace std;
void insertionsort(int A[], int n) {
int value, hole;//value表示插入值,hole表示插入位置
for (int i = 1; i < n; i++) {//初始时索引1至索引n-1属于未排序子集
value = A[i];//索引i赋为待插入值
hole = i;//hole初始化为i
while (hole > 0 && A[hole - 1] > value) {//待插入位置前一元素较大
A[hole] = A[hole - 1];//较大值后移
hole = hole - 1;//插入位置前移
}
A[hole] = value;//将待插入值插入排序集
}
}//时间复杂度:O(n^2)
int main() {
int A[] = { 2,7,4,1,5,3 };
insertionsort(A, 6);
for (int i = 0; i < 6; i++) cout << A[i] << " ";
cout << endl;
}