有一个有序数字序列,从小到大排序,将一个新输入的数插入到序列中,保证插入新数后,序列仍然是升序。
有一个有序数字序列,从小到大排序,将一个新输入的数插入到序列中,保证插入新数后,序列仍然是升序。
共三行,
第一行输入一个整数(0≤N≤50)。
第二行输入N个升序排列的整数,输入用空格分隔的N个整数。
第三行输入想要进行插入的一个整数。
输出为一行,N+1个有序排列的整数。
7 5 30 40 50 60 70 90 20
5 20 30 40 50 60 70 90
int main() {
int n, m;
scanf("%d", &n);
int arr[n];
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
scanf("%d", &m);
int pos = 0;
for (int i = 0; i < n; i++) {
if (arr[i] < m && arr[i + 1] > m) {
pos = i + 1;
break;
}
}
int end = n;
while (pos <= end) {
arr[end] = arr[end-1];
end--;
}
arr[pos] = m;
for (int i = 0; i <= n; i++) {
printf("%d ", arr[i]);
}
return 0;
} #include<stdio.h>
int main() {
int n = 0;
int arr[50] = {0};
int m = 0;
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%d", &arr[i]);
}
scanf("%d", &arr[0]);
for (int j = 0; j < n; j++) {
if (arr[j] > arr[j + 1]) {
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
} else
break;
}
for (int i = 0; i <= n; i++) {
printf("%d ", arr[i]);
}
return 0;
} #include <stdio.h>
int main() {
int n = 0, i = 0;
scanf("%d", &n);
int arr[n + 1];
for (i = 0; i <= n; i++) {
scanf("%d", &arr[i]);
}
int temp = arr[n];
for (i = n - 1; arr[i] > temp; i--) {
arr[i + 1] = arr[i];
}
arr[i + 1] = temp;
for (i = 0; i < n + 1; i++) {
printf("%d ", arr[i]);
}
return 0;
} #include <stdio.h>
int main() {
/*
有一个有序数字序列,从小到大排序,将一个新输入的数插入到序列中,保证插入新数后,
序列仍然是升序。
*/
int n, k, i, j;
int arr[50];
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
scanf("%d", &k);
for (i = -1; i < n - 1; i++) {
if (k <= arr[n - 1]) { // 判断插入的数是否比数组中最大的数小
// 如果是就要将比插入数大的数全都向后移一位
if (k <= arr[i + 1]) {
for (j = n; j >= (i + 2); j--) {
arr[j] = arr[j - 1];
}
arr[i + 1] = k; // 将插入数放在它该在的位置
break;
}
} else { // 如果不是就直接将插入数放在最后
arr[n] = k;
}
}
for (i = 0; i < n + 1; i++) {
printf("%d ", arr[i]);
}
return 0;
} #include <stdio.h>
int main()
{
int N = 0;
int arr[50] = {0};
int num = 0;
int i = 0;
scanf("%d", &N);
for (i = 0; i < N; i++)
scanf("%d", &arr[i]);
scanf("%d", &num);
int flag = 0;
for (i = 0; i < N; i++)
{
if (num <= arr[i] && flag == 0)
{
printf("%d ", num);
flag = 1;
}
printf("%d ", arr[i]);
}
if (flag == 0)
printf("%d ", num);
printf("\n");
return 0;
} #include<stdio.h>
int main()
{
int i,a,arr[50]={0},b;
scanf("%d",&a);
for(i=0;i<a;i++)
{
scanf("%d",&arr[i]);
}
scanf("%d",&b);
arr[a]=arr[a-1];
for(i=a-1;;i--)
{
if(arr[i]>b)
arr[i]=arr[i-1];
else
{
arr[i+1]=b;
break;
}
}
for(i=0;i<a+1;i++)
printf("%d ",arr[i]);
return 0;
} int main(){
int n;
int arr[50] = {0};
scanf("%d", &n);
for(int i = 0; i < n; i++){
scanf("%d ", &arr[i]);
}
int m;
scanf("%d", &m);
int j = 0;
for(j = n - 1; j >= 0; j--){
if(arr[j] > m){
arr[j + 1] = arr[j];
}
else{
arr[j + 1] = m;
break;
}
}
if(j < 0)
arr[0] = m;
for(int i = 0; i < n + 1; i++){
printf("%d ", arr[i]);
}
return 0;
}