算法:直接插入排序
#include<iostream>
#include<string>
using namespace std;
const int MaxSize = 100;
int main()
{
int n;
cin >> n;
int a[MaxSize];
for (int i = 1; i <= n; i++)
{
cin >> a[i];
}
int r[MaxSize];
r[1] = a[1];
for (int i = 2; i <= n; i++)
{
r[0] = a[i]; int j = i - 1;
for (j; r[0] < r[j]; j--)
{
r[j + 1] = r[j];
cout << r[j] << " ";
}
r[j + 1] = r[0];
}
for (int i = 1; i <= n; i++)
{
cout << r[i] <<" ";
}
return 0;
}
此函数,总的来说就是,将一串数字,分为有序区和无序区。刚开始,数字默认存在无序区。
然后将数字逐个插入无序区。
若后序插入的数字无序,则从有序区的末尾,从后往前逐一比较,如果找到序列,则插入进去,并且后序数组下标+1.