輸入数学 デフ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で終了