ACMNO.20 C語言-插入佇列 已有一個已排好的9個元素的陣列,今輸入一個數要求按原來排序的規律將它插入陣列中。 輸入 第一行,原始數列。 第二行,需要插入的數字。
阿新 • • 發佈:2018-12-15
題目描述
已有一個已排好的9個元素的陣列,今輸入一個數要求按原來排序的規律將它插入陣列中。
輸入
第一行,原始數列。 第二行,需要插入的數字。
輸出
排序後的數列
樣例輸入
1 7 8 17 23 24 59 62 101
50
樣例輸出
1
7
8
17
23
24
50
59
62
101
來源/分類
C語言
題目截圖:
思路:
九個數,要建立一個長度為10的陣列! 儲存所有的資料! 先來一個迴圈進行查詢,然後再替換! for(i=0;i<z;i++) { } 然後,發現之後進行替換!比它小的就進行替換! if(a[i]>b) { } 然後就開始,往後進行遷移! for(int j=z-1;j>i;j--) { a[j]=a[j-1]; } 重點來啦!這個替換必須要最後再進行,要不然,就會出現重複的資料啦! 重點來啦!這個替換必須要最後再進行,要不然,就會出現重複的資料啦! 重點來啦!這個替換必須要最後再進行,要不然,就會出現重複的資料啦! 重點來啦!這個替換必須要最後再進行,要不然,就會出現重複的資料啦! 我在這裡,就栽跟頭啦! a[i]=b; 然後結束迴圈! break; 完整程式碼後面再給出來!
程式碼:
#include<iostream> using namespace std; #define z 10 int main() { int a[z]={0};int i,b; for(i=0;i<z-1;i++) { cin>>a[i]; } //cout<<"end!"<<endl; cin>>b; for(i=0;i<z;i++) { //cout<<" "<<a[i]; }//cout<<endl; for(i=0;i<z;i++) { if(a[i]>b) { for(int j=z-1;j>i;j--) { a[j]=a[j-1]; } a[i]=b; break; } //cout<<i<<endl; } //cout<<endl; for(i=0;i<z;i++) { cout<<a[i]<<endl; } }
程式碼截圖:
執行結果:
OJ結果: