欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-28 18:34:58
//每日计划10道题哦,每天复习之前做过的题目 //多敲多练一定能有长进的! //为了你心中的。。。冲啊! 本题要求编写程序,将一个给定的整数插到原本有序的整数序列中,使结果序列仍然有序。 输入格式: 输入在第一行先给出非负整数N(<10);第二行给出N个从小到大排好顺序的整数;第三行给出一个整数X ......

//每日计划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 }