ソート - 選択ソート、挿入ソート、バブルソート、マージソート

輸入数学
 デフselect_sort(リスト):
     "" " 选择排序""" 
    カウント = LEN(リスト)
     のための:範囲(カウント) = のために jのの範囲(I + 1 、カウント):
             場合はリスト[分] > リスト[J]: = Jの
        リスト[i]は、リスト[分] = リスト[分]、リスト[i]は
     、リターンリストは


DEF (リスト)insert_sort:
     "" " 插入排序"""
    カウント =LEN(リスト)
     のための I における範囲(1 、カウント):
        キー = リスト[i]は
        J = I-1
         つつ J> = 0:
             もしリスト[J]> キー:
                リスト[J +1] = リスト[J] 
                リスト[J] = キー
            J - = 1つの
     リターンリストは


デフbubble_sort(リスト):
     "" " 冒泡排序""" 
    カウント = LEN(リスト)
     のために、私範囲(カウント-1 ):
        以下のために J 範囲(カウント-1- i)を:
             もしリスト[J]>リスト[J + 1 ]:
                リスト[J]、リスト[J +1] =リスト[J + 1 ]、リスト[J]
     戻りリスト


DEF (左、右)マージ:
     "" " 分治""" 
    結果 = [] 
    I、J = 0,0
     ながら私がlen <(左)、J < LEN(右)
         場合に左[I] <= 右[J]:
            result.append(左[i])と
            I + = 1
         
            result.append(右[J])
            J + = 1つの
    結果 + = 左[I:] 
    結果 + = 右[J:]
     リターン結果


デフmerge_sort(リスト):
     "" " 归并排序""" 
    場合(リスト)でlen <= 1 戻りリスト
    カウント = LEN(リスト)// 2  = merge_sort(リスト[:数]) = merge_sort(リスト[カウント:])
     戻りマージ(左、右)が


あれば __name__ == ' __main__ ' 
    リスト = [3、4、2、8、9、5、1 ]
     のための ELE リスト:
         プリント(ELE、端= "  " 、印刷" の\ n " のための ELE merge_sort(リスト):
         プリント(ELE、エンド= "  "
3つの4 2 8 9 5 1 

1 2 3 4 5 8 9  
プロセス終了コード0で終了

 

おすすめ

転載: www.cnblogs.com/caigouba/p/11315815.html