总时间限制:
1000ms
内存限制:
65536kB
描述
给定包含N个元素的数组a1,a2,a3,...,aN,利用插入排序将其排成升序,
每次拿出未排序部分中的第一个元素,插入到已排序部分中,排在首个不大于这个元素的后面。
输入
2行
第1行包含1个正整数N(1 < N <= 10000),代表数组元素个数
第2行包含N个整数,空格隔开
输出
N-1行,既依次输出每趟选择排序后的数组
样例输入
4 4 3 1 2
样例输出
3 4 1 2 1 3 4 2 1 2 3 4
代码
#include<iostream>
#include<cmath>
using namespace std;
int a[10000];
int main()
{
int n;
cin>>n;
for(int i = 0; i < n; i++)
{
cin>>a[i];
}
for(int i = 1; i < n; i++)
{
for(int j = i; j > 0; j--)
{
if (a[j] <= a[j-1])
{
swap(a[j], a[j-1]);
}
else
break;
}
for(int i = 0; i < n; i++)
cout<<a[i]<<" ";
cout<<endl;
}
}