问题描述
有 n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数 x,请将该数插 入到序列中,并使新的序列仍然有序。
输入
输入数据包含多个测试实例,每组数据由两行组成,第一行是n 和 m,第二行是已经有序 的 n 个数的数列。n 和 m 同时为 0 标示输入数据的结束,本行不做处理。
输出量
对于每个测试实例,输出插入新的元素后的数列。
样本输入
3 3
1 2 4
0 0
样本输出
1 2 3 4
代码
#include <iostream>
#include <vector>
using namespace std;
int main(){
int n,m,i;
vector<int> vt;
while(cin>>n>>m,n||m){ //n,m同时为0时,结束输入
int t;
for (i = 0; i < n; ++i) { //接受顺序数列
cin>>t;
vt.insert(vt.begin()+i,t);
}
for (i = n; i>0 &&vt[i-1]>m ; i--) { //找到目标位置
vt[i]=vt[i-1];
}
vt[i]=m; //插入
for (int j = 0; j <= n; ++j) { //顺序输出
cout<<vt[j]<<" ";
}
cout<<endl;
}
return 0;
}