演算法 多個無序陣列合併排序

2021-08-27 03:01:48 字數 1128 閱讀 6752

思路1:先單獨排序,再合併 

注意:sorted函式是又返回值的,不改變原來list,注意

若是多個陣列,則可以對其中所有第乙個數進行再排序

def sort1(list1,list2):

list1 = sorted(list1)

list2 = sorted(list2)

res =

while(len(list1) and len(list2)):

if list1[0] < list2[0]:

del list1[0]

else:

del list2[0]

res.extend(list1)

res.extend(list2)

print(res)

思路2:插入排序到第三個空陣列

考慮細節:1 注意判斷是否是最小元素,插入到頭部

2 其實可以合併重複**,多個陣列也是一樣的,三層迴圈。

def sort2(list1,list2):

res =

for i in range(len(list1)):

if len(res) == 0:

continue

for j in range(len(res)-1,-2,-1):

if list1[i] < res[j]:

if j == 0:

res.insert(0, list1[i])

continue

else:

res.insert(j+1,list1[i])

break

for i in range(len(list2)):

for j in range(len(res)-1,-2,-1):

if list2[i] < res[j]:

if j == 0:

res.insert(0, list2[i])

continue

else:

res.insert(j+1,list2[i])

break

print(res)

sort1([3,4,2],[2,4,1,5,6])

無序陣列的歸併排序與合併多個有序陣列

1.什麼是歸併排序?歸併排序先把大的陣列的合併問題拆分成多個小的區間,然後兩兩進行合併。核心思想是遞迴 歸併 遞迴 把大區間拆分成無數個小區間 歸併 把兩個小區間合併成乙個大區間 解題思路 遞迴 兩個有序列表的合併 1.案例1 對無序的陣列進行歸併排序 如下 public static void m...

合併排序陣列

合併兩個排序的整數陣列a和b變成乙個新的陣列。樣例給出a 1,2,3,4 b 2,4,5,6 返回 1,2,2,3,4,4,5,6 挑戰 你能否優化你的演算法,如果其中乙個陣列很大而另乙個陣列很小?class solution param a and b sorted integer array a...

合併排序陣列

題目要求 合併兩個排序好的陣列 2.1 version one 完全採用c 內建函式,不用考慮任何演算法,執行通過 vector mergesortedarray vector a,vector b 2.2 version two 分別使用兩個迭代器指向待排序的陣列,然後依次比較大小.直到出現有乙個...