題意為給定兩個排好序的數組num1和num2,使用歸并排序的思想將這兩個數組合為一個有序數組
題目中給出的提示信息,num1的size大于或等于m + n,十分有用,可以將num2中的元素歸并到num1中
可以從后面開始考慮,即先考慮2個數組中最大的值,并放在下標m+n-1位處,然后向前以此類推
注意,需要兩個變量index_1和index_2來記錄下一步待比較的num1和num2數組元素的下標,給出比較部分的代碼:
while(index_1 >= 0 && index_2 >= 0){ if(nums1[index_1] >= nums2[index_2]) { nums1[index] = nums1[index_1]; index--; index_1--; } else { nums1[index] = nums2[index_2]; index--; index_2--; }}注意,若以上部分執行完畢后,num2中仍有元素未參與比較(即為值最小的幾個元素),需要執行:while(index_2 >= 0){ nums1[index] = nums2[index_2]; index--; index_2--;}若num1中的元素未比較完,則保持原下標不變即可,不需要執行另外的操作
新聞熱點
疑難解答