直接插入排序算法:第一个元素作为有序序列,从第二个元素开始,在其之前的序列里找到对应的位置,然后插入。
下面用了tmp作为哨兵。
#include <iostream>
using namespace std;
const int Nn = 100010;
int a[Nn];
int main() {
int n;
int tmp;
cin >> n;
for (int i = 0; i < n; ++i) {
cin >> a[i];
}
for(int i = 1; i < n; i++)
{
tmp = a[i];
if(a[i] < a[i-1])
{
a[i] = a[i-1];
for(int j = i -2; j >= 0; j--)
{
if(tmp > a[j])
{
a[j+1] = tmp;
break;
}
else
{
a[j+1] = a[j];
if(j==0) a[0] = tmp;
}
}
}
}
for (int i = 0; i < n; ++i) {
cout << a[i] << ' ';
}
}