C語言 在乙個公升序排列的陣列中插入乙個數

2021-10-06 00:11:19 字數 1308 閱讀 9732

在乙個公升序排列的陣列中插入乙個數 (10分)

編寫函式fun,在乙個已按公升序排列的陣列中插入乙個數,插入後,陣列元素仍按公升序排列。

函式介面定義:

void

fun(

int a[n]

,int number)

;

其中 a 和 number 都是使用者傳入的引數。函式在乙個已按公升序排列的陣列 a 中插入乙個數 number ,插入後,陣列元素仍按公升序排列

裁判測試程式樣例:

#include

#define n 11

void

fun(

int a[n]

,int number)

;int

main()

;scanf

("%d"

,&number)

;printf

("the original array:\n");

for(i =

0; i < n -

1; i++

)printf

("%5d"

, a[i]);

printf

("\n");

fun(a, number)

;printf

("the result array:\n");

for(i =

0; i < n; i++

)printf

("%5d"

, a[i]);

printf

("\n");

return0;

}

輸入樣例:

6
輸出樣例:

the original array:12

4689

1215

149156

the result array:12

4668

91215149

156

個人答案如下:

void

fun(

int a[n]

,int number)

break;}

} a[m]

= number;

}

原理:

如果輸入的數number大於arr[i];

那麼從陣列arr最後一位arr[n]開始,將arr[n]的值賦給arr[n+1],同時n- -,直到n>i;

最後將number賦值給arr[i];

陣列的合併和公升序排列 31 下乙個排列

題目 實現獲取下乙個排列的函式,演算法需要將給定數字序列重新排列成字典序中下乙個更大的排列。如果不存在下乙個更大的排列,則將數字重新排列成最小的排列 即公升序排列 必須原地修改,只允許使用額外常數空間。以下是一些例子,輸入位於左側列,其相應輸出位於右側列。1,2,3 1,3,2 3,2,1 1,2,...

判斷乙個數字是否在公升序矩陣中

原題 該題目要求輸入二維向量形式的矩陣matrix以及數字target,要求判斷target是否在該矩陣裡。本題的特點在於矩陣為公升序,即從左到右,從上到下都是遞增的。利用這一特點,我們就可以跳過繁瑣的遍歷過程,使用簡便的方法來查詢到該元素。假設我們從開頭開始搜尋,那麼如果該元素小於目標,那就只需要...

面試題 將兩個公升序排列的鍊錶合併成乙個公升序鍊錶

將兩個公升序排列的鍊錶合併成乙個有序鍊錶 例如 head1 2 3 5 6 7 9 11 head2 2 4 5 7 9 合併之後結果為 head 2 2 3 4 5 5 6 7 7 9 9 11 如下 設head1和head2是兩個非空單向鍊錶,資料值有重複且公升序排序 將head1和head2合...