输入一组整数存放在数组中,从数组的1号单元开始存放,以空格分隔,以-1结束,用直接插入排序方法对这组数进行排序,写出第n趟排序的结果。输入输出示例如下。
输入:
10 3 4 8 9 -1 1 //最后一个1为n的值
输出:
3 10 4 8 9 //每个数后有一个空格
注意:输入的数组以-1结束;最后还要输入一个n;表示n次运行的结果。
#include<iostream>
using namespace std;
int a[100000];
int len;
void input(){
for(int i=0;cin>>i&&i!=-1;)
{
a[len]=i;
len++;
}
}
//直接插入算法
void InsertionSort()
{
int n;
cin>>n;
for (int j=1; j<n+1; j++)
{
int key = a[j];
int i = j-1;
while (i>=0 && a[i]>key)
{
a[i+1] = a[i];
i--;
}
a[i+1] = key;
}
}
int shuchu()
{
for(int i=0;i<len;i++)
{
cout<<a[i]<<" ";
}
}
int main()
{
input();
InsertionSort();
shuchu();
return 0;
}
运行结果
如果把n次运行结果的去掉,就是 输入数组以-1结束
代码如下:
#include<iostream>
using namespace std;
int a[100000];
int len;
void input()
{
for(int i=0;cin>>i&&i!=-1;)
{
a[len]=i;
len++;
}
}
void InsertionSort()
{
for (int j=1; j<len; j++)
{
int key = a[j];
int i = j-1;
while (i>=0 && a[i]>key)
{
a[i+1] = a[i];
i--;
}
a[i+1] = key;
}
}
int shuchu()
{
for(int i=0;i<len;i++)
{
cout<<a[i]<<" ";
}
}
int main()
{
input();
InsertionSort();
shuchu();
return 0;
}
输入 :3 2 1 -1
输出:1 2 3