陣列合併
題目描述
編寫乙個程式,將兩個有序陣列合併成乙個更大的有序陣列,要求時間複雜度為o(n)。
輸入
多組資料輸入,每組輸入包括兩行,每行第乙個數字為陣列長度n,然後輸入n個有序整數。
輸出
輸出合併後的陣列(公升序),每組輸出用乙個空行隔開。
樣例輸入 copy
3 1 3 5樣例輸出 copy3 2 4 6
2 1 2
4 3 4 5 6
1 2 3 4 5 6其實這就是二分查詢的公升級版,兩個陣列都是有序的,我們可以以其中任何乙個陣列為插入資料的物件,然後遍歷另乙個陣列,如果比當前範圍(left-right)的最小的要小,則陣列往後移,將這個數放入目前範圍內最小的位置;1 2 3 4 5 6
若比當前範圍內最大的數要大,則將這個陣列目前最大範圍的最大數後面的數往後移,再將這個數放到目前範圍最大的位置;
上述兩種情況都是數字不在範圍內,如果數字在範圍內,即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 中的元素...