对于每个测试实例,输出插入新的元素后的数列。
#include
#include
#include
int main()
{
int n,m,i,a;
while(scanf("%d %d",&n,&m)!=EOF&&n<=100){
int *a=(int *)malloc(sizeof(int)*(n+1));
memset(a,0,sizeof(int)*(n+1));
for(i=0;iscanf("%d",&a[i]);
}
i=n-1;
while(i>=0){ //插入排序
if(m1]=a[i];
else {a[i+1]=m;
break;
}
i--;
}
for(i=0;i<=n;i++){
printf(i==0?"%d":" %d",a[i]);
}
printf("\n");
}
return 0;
}
供参考:
#include <stdio.h>
#define N 101
int main()
{
int T, n, m, i, a[N];
scanf("%d", &T);
while (T--){
scanf("%d%d", &n, &m); //n:有序数列的个数 ,m:待插入的数
if (n == 0 && m == 0) continue;//n和m同时为0标示输入数据的结束,本行不做处理
for (i = 0; i < n; i++) //输入n个有序数列元素
scanf("%d", &a[i]);
if (m > a[n - 1]) { //插入操作
a[n] = m;
}
else {
for (i = n; m < a[i - 1] && i > 0; i--) {
a[i] = a[i - 1];
}
a[i] = m;
}
for (i = 0; i < n + 1; i++)//输出 插入数后的有序数列
printf(i == 0 ? "%d" : " %d", a[i]);
printf("\n");
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
int m;
int arr[100+1];
while (cin >>n >>m && n && m)
{
for (int i=0; i<n; i++)
{
cin >>arr[i];
}
int j=n-1;//一共n张牌 从最后一张开始往前找
while (j>=0 && m < arr[j])//只要这张牌还没找到对的位置,就往后移动
{
arr[j+1] = arr[j];
j--;
}
arr[j+1] = m;
for (int i=0; i<=n; i++)
{
printf("%d%c",arr[i]," \n"[i==n]);//输出“空格空格空格....最后回车的技巧”
}
}
return 0;
}