方法一:從後往前排,從陣列的尾端往前比較,放置元素,如果nums2中有數剩餘沒排,則將其copy到nums1中 o(n)
void
merge
(int
* nums1,
int nums1size,
int m,
int* nums2,
int nums2size,
int n)
else
temp1--;}
if(0== m)
}
方法二:將2個陣列拼湊起來,再排序,感覺適用性高,各種題型都合適,但是效率低o(n2)
void
bubble_sort
(int
* _buff,
int _len)
_buff[j+1]
^= _buff[j]
; _buff[j]
^= _buff[j+1]
; _buff[j+1]
^= _buff[j];}
}}void
merge
(int
* nums1,
int nums1size,
int m,
int* nums2,
int nums2size,
int n)
88 合併兩個有序陣列(簡單)
解題思路 使用 i 遍歷nums1,由於兩個陣列都為有序陣列所以可以直接比較第 i 個元素和nums2中的元素,若第i個元素比nums2中第乙個元素大的話,則將nums2中的的第乙個元素插入到第i個位置,將nums2 0 刪除 nums2陣列中始終儲存著沒有插入的元素 若第i個位置小於nums2中的...
88 合併兩個有序陣列
略。知道是在nums1上變動。如果從nums1的頭部開始放,就會出現nums1緊接著的第乙個元素還沒有nums2從頭數第二個元素小的情形,這樣就沒有辦法比較了。而從nums1的最後乙個元素開始放,能夠保證nums1和nums2的最後乙個元素一定比彼此的倒數第二個元素大。所以選擇從nums1的最後乙個...
88 合併兩個有序陣列
給定兩個有序整數陣列 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 思路 建乙個新的陣列nums,長度為m n 用乙個fo...