Pythonはマージソート

ソートマージ
ソートマージする分割統治法を用いて非常に一般的なアプリケーションです。アイデアは、ソートの再帰的分解の配列をマージして、配列をマージすることです。
最小に配列した後、および2つの順序付けられた配列をマージ、基本的な考え方は、数2列の前面を比較することで、誰が対応するポインタを取った後、バックいずれかを移動させる、第1の小かかります。次いで、比較、他の配列にコピーの最後の残りの部分までは、空の配列。

コードの実装
[パイソン]プレーンテキストビューコードをコピー

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
DEFのmerge_sort(連想リストを):
lenをIF(連想リストを)<= 1:
リターン連想リスト

二部の分解

num = len(alist)/2
left = merge_sort(alist[:num])
right = merge_sort(alist[num:])
# 合并
return merge(left,right)

DEF(左、右)をマージ:
「」「の操作をマージ二つ[]は規則配列を左右[]一つの大きなソートされた配列にマージ」「」
#leftポインタと右の添字
L、R = 0,0
結果= []
しばらくL <LEN(左)及びR&LT <LEN(右):
左IF [L] <右[R&LT]:
result.append(左[L])
。Lの+ 1 =
他:
結果。追記(右[R&LT])
。R&LT + 1 =
結果+ =左[L:]
結果+ =右[R&LT:]
返信結果

連想リスト= [5、12、100、45、73、150、4、8]
sorted_alist =マージ(連想リスト)
プリント(sorted_alist)

時間計算量
O(nlogn):最適な時間の複雑
最悪の場合、時間の複雑さ:O(nlogn)
安定性:

おすすめ

転載: blog.51cto.com/14500648/2430032