題目描述
有一個已排好序的數組,要求輸入一個數後,按原來排序的規律將它插入到數組中。
假設數組長度爲10,數組中前9個數(這9個數要求從鍵盤上輸入,輸入時要滿足自小到大的輸入順序)已經按從小到大進行排序。
然後再從鍵盤上輸入一個整數,將此整數插入到前有序的9個數中,使得最終的10個數依然是從小到大有序的。
解法1
思路:先輸入有序的九個數字來填充數組。再輸入要插入的數,用該數分別與數組中的每個數字進行比較。
#include <stdio.h>
int main(){
int a[10],x;
printf("請輸入a[j]的值:");
for(int j=0;j<9;j++){
scanf("%d",&a[j]);
}
printf("請輸入x的值:");
scanf("%d",&a[9]);
x=a[9];
for (int j=0;j<9;j++){
if(a[j]<=x){
int temp=a[j+1];
a[j+1]=x;
x=temp;
}
}
for(int j=0;j<10;j++){
printf("%d\n",a[j]);
}
return 0;
}
解法2
思路:思路同上,只是把要插入的數字輸入成a[9],因爲我們一開始只輸入了九個數字,數組是從a[0]開始的,所以a[9]默認爲0,我們把要插入的數字輸入爲a[9]之後,用a[9]分別和a[0]到a[8]每一個數字進行比較。
#include <stdio.h>
int main(){
int a[10],x;
printf("請輸入a[j]的值:");
for(int j=0;j<9;j++){
scanf("%d",&a[j]);
}
printf("請輸入x的值:");
scanf("%d",&x);
for (int j=0;j<=8;j++){
if(x<a[j])
{
int temp=a[j];
a[j]=x;
x=temp;
}
if(j==8)
{
a[9]=x;
}
}
for(int j=0;j<10;j++){
printf("%d\n",a[j]);
}
return 0;
}