兩個有序陣列的合併

2021-09-14 01:46:53 字數 897 閱讀 1969

陣列合併

題目描述

編寫乙個程式,將兩個有序陣列合併成乙個更大的有序陣列,要求時間複雜度為o(n)。

輸入

多組資料輸入,每組輸入包括兩行,每行第乙個數字為陣列長度n,然後輸入n個有序整數。

輸出

輸出合併後的陣列(公升序),每組輸出用乙個空行隔開。

樣例輸入 copy

3 1 3 5

3 2 4 6

2 1 2

4 3 4 5 6

樣例輸出 copy

1 2 3 4 5 6

1 2 3 4 5 6

其實這就是二分查詢的公升級版,兩個陣列都是有序的,我們可以以其中任何乙個陣列為插入資料的物件,然後遍歷另乙個陣列,如果比當前範圍(left-right)的最小的要小,則陣列往後移,將這個數放入目前範圍內最小的位置;

若比當前範圍內最大的數要大,則將這個陣列目前最大範圍的最大數後面的數往後移,再將這個數放到目前範圍最大的位置;

上述兩種情況都是數字不在範圍內,如果數字在範圍內,即x>a[left]&&xa[mid]&&x用乙個全域性變數來儲存當前已經放了幾個數,因為每放一次,陣列的長度就會變化,

**如下:

#include

int count=0;//記錄陣列的變化長度 

void move(int *a,int n,int k)

}int binary_search(int *a,int n,int x)

if(x>=a[right])

if(x>a[left]&&xa[mid]&&x第一次寫部落格,多多關照呀呀!!!

合併兩個有序陣列

例如 陣列a1 陣列a2 則合併為a3 思路 依次掃瞄a1和a2的元素 比較當前元素的值,將較小的元素賦給a3,直到乙個陣列掃瞄完畢,然後將另乙個陣列的剩餘元素賦給a3即可。陣列a3的容量需要容納a1和a2兩個陣列和長度和。實現 include include void merge int a1,i...

合併兩個有序陣列

給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為乙個有序陣列。說明 示例 輸入 nums1 1,2,3,0,0,0 m 3 nums2 2,5,6 n 3 輸出 1,2,2,3,5,6 class solution def merge s...

合併兩個有序陣列

題目描述 給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為乙個有序陣列。說明 初始化 nums1 和 nums2 的元素數量分別為 m 和 n。你可以假設 nums1 有足夠的空間 空間大小大於或等於 m n 來儲存 nums2 中的元素...