插入排序,即使将i个数据插入到钱i-1个已排好的数据中,然后将其数据进行错位。就像打扑克一样,新抓一张牌,插入自己手中已排好的牌中。
#include <bits/stdc++.h>
using namespace std;
void insert_sort(int a[],int n){
int tmp,j;
for(int i=1;i<n;i++){
tmp = a[i];
j = i;
while(j>0 && tmp<a[j-1]){
a[j] = a[j-1]; //将其大于tmp的数据向后挪一位,为tmp空出位置
j--;
}
a[j] = tmp; //将tmp插入数列
}
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF){
int a[n];
for(int i=0;i<n;i++){
scanf("%d", &a[i]);
}
insert_sort(a,n);
for(int i=0;i<n;i++){
printf("%d ",a[i]);
}
}
return 0;
}