题目描述:
表中数据元素的数据类型为整型,按有序方式(从小到大)输入表中初始元素,再输入两个整数,以空格隔开,将两个整数插入到有序表中的正确位置。
输入描述:
输入有序表中元素的个数n,占一行; 按从小到大的顺序输入n个整数,以空格隔开,占一行; 输入待插入元素x,y,占一行。
输出描述:
输出插入x和y之后的有序表,以空格隔开,最后一个整数后面要求有空格
输入样例:
6
1 3 5 9 11 13
4 10
输出样例:
1 3 4 5 9 10 11 13
输入样例:
1
5
1 3
输出样例:
1 3 5
输入样例:
2
4 6
8 13
输出样例:
4 6 8 13
写法一:
#include<iostream>
using namespace std;
int main()
{
int flag = 0;
int x,y,i,j,n,a[100] = {0};
std::cin>>n;
for(i=0;i<n;i++)
{
std::cin>>a[i];
}
std::cin >> x >> y;
//TODO 将x y 有序插入到数组a中
n+=2;
a[n-1] = x;
a[n-2] = y;
for(int i = 0; i < n; i++)
{
for(int j = i+1; j < n; j++)
{
if(a[i] > a[j])
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
for(i=0;i<n;i++)
std::cout<< a[i] <<" ";
return 0;
}
写法二(所给所给参考答案):
#include<iostream>
using namespace std;
int main()
{
int flag = 0;
int x,y,i,j,n,a[100] = {0};
std::cin>>n;
for(i=0;i<n;i++)
{
std::cin>>a[i];
}
std::cin >> x >> y;
for(i=0;i<n;i++)
{
if(a[i]>x)
{
n++;
for(j=n-1;j>=i;j--)
{
a[j+1]=a[j];
}
a[i]=x;
flag = 1;
break;
}
}
if ( flag == 0 )
{
a[i]=x;
n++;
flag = 0;
}
for(i=0;i<n;i++)
{
if(a[i]>y)
{
n++;
for(j=n-1;j>=i;j--)
{
a[j+1]=a[j];
}
a[i]=y;
flag = 1;
break;
}
}
if ( flag == 0 )
{
a[i]=y;
n++;
}
for(i=0;i<n;i++)
std::cout<< a[i] <<" ";
return 0;
}