譚浩強 紅寶書 章節6 課後習題4
阿新 • • 發佈:2018-12-09
題目:有一個已排好序的陣列,要求輸入一個數後,按原來排序的規律將它插入陣列中
像這種題目給的條件有點模糊,與一些指示明確的比賽題目不一樣。
所以我們先暫定一個升序陣列 {1,2,4,5,8}, 因為有5個元素,所以我們定義時按照題目要求,應該給其多加一個元素。也就是a[6]={1,2,4,5,8}。
然後按照從大至小的順序讓插入數b與a[i]進行對比排列,大的數賦值給a[i+1], 然後依次進行比較。
為什麼要賦值給a[i+1]呢,舉個簡單例子
b值為6,a[5]也就是8,當b<a[5],就將a[5]賦值給a[6]。而a[5]的值就空了出來,
b又繼續和5(a[4])進行比較,如果b大於a[4]呢,就將b賦值給a[5],然後成功結束,直接輸出。
#include<stdio.h> int main() { int n=6,i=0,b=0,temp=0; int a[6]={1,2,4,5,8}; //一個升序變數,數值為6,但只定義了5個,還留著一個 scanf("%d",&b); for(i=n-2;i>=0;i--) //迴圈5次,降序輸出。 { if(a[i]>b) //如果a[i]>b, { a[i+1]=a[i]; //將a[i]賦值給a[i+1] } else { a[i+1]=b; //如果b>a[i],將b賦值給a[i+1] break; } } for(i=0;i<n;i++) { printf("%d\t",a[i]); } system("pause"); return 0; }