比較簡單:對有序陣列a,b,求a,b組成的有序陣列arr
1、a中最大 < b 最小,先拷貝a至arr,再拷貝b,至arr。
2、b中最大 < a中最小,先拷貝b至arr,再拷貝a至arr。
3、無1,2極端情況,依次取a,b首元素比較,將較小者放入arr。注意考慮a,b陣列長度不相等時,長度更長者未能遍歷完的情況。
public static int merge(int a,int b)
while (j < b_len)
//b陣列最大}else if (b[b_len-1] < a[0])
while (i < a_len)
//沒有以上極端情況
}else else
k++;
}//當a,b陣列長度不想等時,會其中乙個陣列的剩下部分元素還未被放入arr的情況
//只需要將剩下元素全部拷貝到arr即可
while (i < a_len)
while (j < b_len)
}return arr;
}
合併兩個有序的陣列
給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為乙個有序陣列。說明 初始化 nums1 和 nums2 的元素數量分別為 m 和 n。你可以假設 nums1 有足夠的空間 空間大小大於或等於 m n 來儲存 nums2 中的元素。示例 輸...
合併兩個有序陣列
例如 陣列a1 陣列a2 則合併為a3 思路 依次掃瞄a1和a2的元素 比較當前元素的值,將較小的元素賦給a3,直到乙個陣列掃瞄完畢,然後將另乙個陣列的剩餘元素賦給a3即可。陣列a3的容量需要容納a1和a2兩個陣列和長度和。實現 include include void merge int a1,i...
合併兩個有序子陣列
設子陣列a 0 k 1 和a k,n 1 已經排好序 0 k n 1 設計乙個合併這兩個子陣列的排序好的陣列a 0 n 1 的 演算法。要求演算法最壞情況下所用的計算時間為o n 且只用到o 1 的輔助空間。解答此題可以用向右 左 迴圈換位合併的思想,先用二分搜尋查詢a 0 在陣列a k n 1 中...