很经典的插入排序算法。和选择排序一样,也很简单。
把数组分为有序和无序两个部分,然后再将无序部分中的第一个数插入有序部分,使得有序部分仍然有序并且变大,无序部分变小。
#include <iostream>
#include <vector>
using namespace std;
vector<int> A;
void insertSort(){
for(int i = 1;i < A.size();i ++){
int j = i,temp = A[i];
while(j > 0 && temp < A[j-1]){
A[j] = A[j-1];
j--;
}
A[j] = temp;
}
}
int main(){
int n,one;
cin >> n;
for(int i = 0;i < n;i ++){
cin >> one;
A.push_back(one);
}
insertSort();
for(int i = 0;i < A.size();i ++)
cout << A[i] << " ";
return 0;
}
/*
sample input:
6
2 5 8 9 1 4
sample output:
1 2 4 5 8 9
*/