1. 程式人生 > 實用技巧 >有一個已經排好序的陣列,要求輸入一個數後,按原來順序的規律將它插入陣列中

有一個已經排好序的陣列,要求輸入一個數後,按原來順序的規律將它插入陣列中

有一個已經排好序的陣列,要求輸入一個數後,按原來順序的規律將它插入陣列中

【答案解析】

將資料插入到已排序的序列中,只需兩步即可:

  1. 找待插入元素在陣列中的插入位置
  2. 插入元素

具體如下:

注意:極端情況下,end可能會被減為-1,比如在上述序列中插入0

【程式碼實現】

#include<stdio.h>
int main()
{
	int num = 0;
	int array[10] = {1,2,3,4,5,6,7,8,9};

	printf("請輸入一個整數:");
	scanf("%d", &num);

	printf("原陣列序列為:\n");
	for (int i = 0; i < 9; ++i)
		printf("%d ", array[i]);
	printf("\n");

    // 陣列為升序
    // 在陣列中找待插入元素的位置,具體找的方式為:
    // 從後往前依次與陣列中元素進行比較,如果要插入元素num比end位置資料小,則num一定插在end位置之前
    // 因此將end位置資料往後搬移一個位置
    // 如果num大於end位置元素或者end已經在區間最左側,則位置找到
    // 最後將新元素插入到end+1的位置
	int end = 8;
	while (end >= 0 && num < array[end])
	{
		array[end+1] = array[end];
		end--;
	}

	array[end + 1] = num;
	printf("插入元素%d之後的結果為:\n", num);
	for (int i = 0; i < 10; ++i)
		printf("%d ", array[i]);
	printf("\n");
	return 0;
}

【結果截圖】