有一个有序数字序列,从小到大排序,将一个新输入的数插入到序列中,保证插入新数后,序列仍然是升序。
有一个有序数字序列,从小到大排序,将一个新输入的数插入到序列中,保证插入新数后,序列仍然是升序。
共三行,
第一行输入一个整数(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; }