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