將兩個有序列表合併,並保持順序(一)

2021-08-28 13:34:31 字數 628 閱讀 9784

我們的思路是這樣的:

首先要將l1,l2的元素乙個乙個地比較

我們可以每次拿出l1的乙個元素,去和列表l2的每個元素作比較

然後插入到l2合適的位置

插入完畢在l1中將這個元素刪除

這樣就會出現乙個問題

當l2有兩個相同元素時,l1中比它大的元素插入到第乙個的後面,就會出現差錯

我們可以想一種其他的方法

每次取出l1,l2列表中的第乙個元素作比較

把較小的元素新增到新列表,然後刪除l1或l2中這個元素

這樣迴圈比較的話,一定有乙個列表先為空

然後把另乙個列表的剩餘元素全部追加到新列表中

第一種方法是拿乙個元素有序插入到乙個有序列表中

其本質是拆分與細化,由點到面,先做簡單的事

第二種方法更像是武當派和少林寺的高手過招,兩支隊伍乙個乙個上陣,數量小代表武藝精,

每支隊伍由強到弱派出選手,獲勝的人去坐金交椅,失敗的人留下來繼續pk,直到將所有高手排出名次

mysql將兩個表結果合併並分頁

功能 使用mysql中union all 將2個表中的資料查詢結果合併到乙個返回結果中。再針對結果統一排序 分頁操作等。注 2個表返回的列名必須一致 語句如下 select a.欄位,a.欄位,from select 表.欄位1,表.欄位2 from 表 where 條件 union all sel...

合併兩個有序列表

1.尾遞迴 1 def recursion merge sort2 l1,l2,tmp 2if len l1 0 or len l2 0 3tmp.extend l1 4tmp.extend l2 5return tmp6 else 7 if l1 0 dell1 0 10else 11 12del...

go合併兩個有序列表

題目 將兩個有序鍊錶合併為乙個新的有續鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點做成的。思路 1 如果給定的兩條鍊錶中有一條為空,返回另一條即可 2 若兩條鍊錶都不為空,則在兩條鍊錶中選擇較小的節點作為head,被選中的較小節點所在鍊錶的第二個節點便成了二當家帶領這條鍊錶 3 二當家帶領著...