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 }