merge sorted array
問題:
given two sorted integer arrays a and b, merge b into a as one sorted array.
常規思想:
從b的起始位置開始,將選中的值與a陣列值逐一判斷,找到a[i]大於b[j]的i將其插入,如此迭代下去。
public static void merge(int a, int m, int b, int n)
} int a = 0, b = 0;
while (b < n)
if (a < m)
a[a] = b[b];
} else
a++;
b++;
m++;
} }
ps ,此方法存在弊端,在每次插入,需要迭代陣列,複雜度比較大,o(n*m/2)。
另一種好的方法:
假設 a陣列 大小為 m; b陣列大小為 n
由題可知,最後合併成的陣列a,大小必定是a+b,也即n+m,既然這樣,為什麼不從n+m-1位開始,
從 n-1 開始,比較 b[n-1]與a[m-1] 將大的賦值給a[n+m-1],依次迭代下去,
public static void mergenew(int a, int m, int b, int n)
}
LeetCode 陣列 合併兩個有序陣列
給你兩個有序整數陣列 nums1 和 nums2,請你將 nums2 合併到 nums1 中,使 nums1 成為乙個有序陣列。說明 初始化 nums1 和 nums2 的元素數量分別為 m 和 n 你可以假設 nums1 有足夠的空間 空間大小大於或等於 m n 來儲存 nums2 中的元素。示例...
兩個有序陣列合併
題目描述 已知陣列a中有m個按公升序排列的元素,陣列b中有n個按降序排列的元素,程式設計將a與b中的所有元素按降序存入陣列c中。輸入輸入有兩行,第一行首先是乙個正整數m,然後是m個整數 第二行首先是乙個正整數n,然後是n個整數,m,n均小於等於1000000。輸出輸出合併後的m n個整數,資料之間用...
LeetCode 兩個排序陣列的中位數
給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2 請找出這兩個有序陣列的中位數。要求演算法的時間複雜度為 o log m n 示例 1 nums1 1,3 nums2 2 中位數是 2.0示例 2 nums1 1,2 nums2 3,4 中位數是 2 3 2 2.5 package...