插入排序的重点在于从后往前面的有序列推进,需要注意到达终点时的处理与其他不同。
#include <iostream>
using namespace std;
int arr[1001];
void insert_sort(int n){
int tmp;
for(int i = 1; i < n; i++){
tmp = arr[i];
for(int j = i-1; j >= 0; j--)
if(tmp < arr[j]) {
arr[j+1] = arr[j];
if(j == 0) { arr[0] = tmp; break; } //arrive the end
}
else {
arr[j+1] = tmp;
break;
}
}
}
int main(){
int n;
cin >> n;
for(int i = 0; i < n; i++) cin >> arr[i];
insert_sort(n);
for(int i = 0; i < n; i++) cout << arr[i] << " ";
cout << endl;
}