插入排序

很常用的一种排序

#include <iostream>
using namespace std;

int a[10000];

int main(){
    int n;
    cin >> n;
    for (int i=0;i<n;i++){
        cin >> a[i];
    }
    int t,j; //t储存当前取到的项的值,j储存当前比较到的项的项数
    for (int i=1;i<n;i++){ //第一个默认有序,所以从第二个开始
        t=a[i]; //赋值
        j=i; //赋值
        while (j>0 && a[j-1]>t){ //while循环向前遍历:如果当前比较到的
            a[j]=a[j-1];         //项的前一项比当前比较到的项大,那么
            j--;                 //前一项的值移至当前项,并当前比较到的项
        }                        //的项数向前移;j若到0或找到前一项
        a[j]=t;                  //小于等于当前比较到的项,跳出循环
    }                            //并给当前比较到的项赋值为t
    for (int i=0;i<n;i++){
        cout << a[i] << ' ';
    }
    cout << endl;
    return 0;
}