//每日计划10道题哦,天天复习以前作过的题目数组
//多敲多练必定能有长进的!spa
//为了你心中的。。。冲啊!code
本题要求编写程序,将一个给定的整数插到本来有序的整数序列中,使结果序列仍然有序。blog
输入在第一行先给出非负整数N(<10);第二行给出N个从小到大排好顺序的整数;第三行给出一个整数X。排序
在一行内输出将X插入后仍然从小到大有序的整数序列,每一个数字后面有一个空格。ip
5 1 2 4 5 7 3
1 2 3 4 5 7
1 #include<stdio.h> 2 #include <stdlib.h> 3 /** 4 思路是: 5 1.先找到x在原数组中的位置 6 2.而后将数组中的元素都日后挪一位 7 3.将X插入以前找到的那个位置 8 4.输出排序后的数组 9 */ 10 int main(){ 11 int m[12];///为了不边界状况,数组必定要开大 12 int n,i,x; 13 scanf("%d",&n);///输入要排序的数字的个数 14 for(i=0;i<n;i++){ 15 scanf("%d",&m[i]); 16 } 17 scanf("%d",&x); 18 i=0; 19 ///当排序好的数字小于x且i小于n时,i++ 20 ///目的是统计x是在排好序的那段数字中的什么位置 21 ///找到要插入的数字在排好序的数字中的哪一个位置 22 while(m[i]<x&&i<n){ 23 i++; 24 } 25 ///利用for循环从n遍历到i,将数组的值向后挪一位 26 ///目的是给那个要插入的X数字腾出位置 27 for(int j=n;j>=i;j--){ 28 m[j+1]=m[j]; 29 } 30 ///下面的语句的目的是将x插入到原数组中 31 m[i]=x;///将x赋值给m[i],i就是以前找到的那个位置---X比以前的值都大,且小于后面的值 32 ///输出如今的数组,便是插入排序后的数组 33 for(int k=0;k<=n;k++){ 34 printf("%d ",m[k]); 35 } 36 return 0; 37 }