假定有乙個陣列a[1····m], p, q, r 為他的三個索引,並且有1 <= p <= q < r <= m, 兩個子陣列a[p····q]和a[q+1····r]各自按照公升序排列,我們要重新安排a中的元素位置,使得子陣列a[p····r]也按照公升序排列。也就是合併a[p····q]和a[q+1····r]的過程。
我們使用兩個指標s和t,初始化時各自指向a[p]和a[q+1], 再用乙個空陣列b[p····r]做佔存期。每一次比較元素a[s]和a[t], 將較小的元素新增到輔助陣列b,如果相同就把a[s]新增進去,然後更新指標,如果a[s] <= a[t], 則s加1,否則t加1,當條件s = q + 1 或 t = r + 1的時候結束此過程。在第一種情況下,我們把陣列a[t····r]中剩餘的元素新增到b中,而另一種情況下, 把陣列a[s····q]中剩餘的元素新增到b中。最後把b中的元素複製會a中。
合併兩個排序鍊錶
struct listnode class solution else while pstart1 null pstart2 null plast next pstart1 plast pend1 pend1 pend1 next pstart1 pend1 else plast next psta...
合併兩個排序鍊錶
描述 將兩個排序鍊錶合併為乙個新的排序鍊錶樣例 給出1 3 8 11 15 null,2 null,返回1 2 3 8 11 15 null。解題思路 將兩個鍊錶當中的對應元素的值進行比較,重新確定新鍊錶當中元素的位置。若第乙個鍊錶當前位置的值小於第二個鍊錶當前值,則不需要改變位置,第乙個鍊錶的指標...
合併兩個排序鍊錶
問題描述 將兩個排序鍊錶合併為乙個新的排序鍊錶 樣例 給出1 3 8 11 15 null,2 null,返回1 2 3 8 11 15 null。解題思路 遍歷第二個鍊錶的每乙個節點,然後與第乙個節點的第乙個節點比較,如果第二個鍊錶節點的值小於第乙個,就插入到第乙個煉表裡,如果大於就到下乙個節點。...