当前位置: 移动技术网 > IT编程>开发语言>C/C++ > C语言拯救计划Day2-1之简化的插入排序

C语言拯救计划Day2-1之简化的插入排序

2020年04月25日  | 移动技术网IT编程  | 我要评论

王常姑,火影之若天,邪恶的一天开始啦

//每日计划10道题哦,每天复习之前做过的题目

//多敲多练一定能有长进的!

//为了你心中的。。。冲啊!

 

本题要求编写程序,将一个给定的整数插到原本有序的整数序列中,使结果序列仍然有序。

输入格式:

输入在第一行先给出非负整数n(<10);第二行给出n个从小到大排好顺序的整数;第三行给出一个整数x。

输出格式:

在一行内输出将x插入后仍然从小到大有序的整数序列,每个数字后面有一个空格。

输入样例:

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 }

 




如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网