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