题解 | #有序序列插入一个整数#
有序序列插入一个整数
https://www.nowcoder.com/practice/444e87f938464906a1649cff236b102b
#include <stdio.h> int main() { int n=0,x,i; scanf("%d\n",&n); int arr[51]={0}; for(i=0;i<n;i++) { scanf("%d ",&arr[i]); } scanf("%d\n",&x);//x是要插入的数字 for(i=n;i>0;i--)//反着遍历数组,从后向前一次比较 { //现在这个数组的最后一位是arr[i-1] if(arr[i-1]>=x)//x比这个数组中最后一个元素还小的话,那么就换写一个数与x比较 { arr[i]=arr[i-1];//我们将原先的最后一位的数字往后挪一位,因为这个x比这个数小,我们要插进来 } else//arr[i-1]<x最后一个数小于x的话,那么直接将x赋值到最后位的再后一位 { arr[i]=x;//那么x就是最大的数,直接放在后面,因为我们设置的数组大小够大,所以我们直接这么写,将arr[i]赋值为x break;//插入完我们直接break跳出去 } } if(i==0) { arr[i]=x;//易错点:for循环中不包括i=0的情况,要单独处理 } //打印改变后的数组 for(i=0;i<=n;i++) { printf("%d ",arr[i]); } return 0; }