八大排序演算法Python實現 歸併排序

2021-09-26 06:14:29 字數 1179 閱讀 4068

部落格**是博主想複習下排序演算法然後手打的,已經過除錯。若還有錯誤請指出!

該演算法採用經典的分治(divide-and-conquer)策略(分治法將問題分(divide)成一些小的問題然後遞迴求解,

而治(conquer)的階段則將分的階段得到的各答案"修補"在一起,即分而治之)。

分階段可以理解為就是遞迴拆分子序列的過程,遞迴深度為logn

平均                  最壞           最好          空間     穩定性     複雜性

o(nlogn)  o(nlogn)    o(nlogn)  o(n)     穩定     較複雜

對於氣泡排序和選擇排序,每一趟都能確定乙個元素的最終位置

歸併排序,第一趟排序結束都可以得到若干個有序子串行,而此時的序列中並沒有兩兩元素有序排列。

插入排序在每趟排序後能確定前面的若干元素是有序的,而此時第二趟排序後,序列的前三個元素是有序的,符合其特徵。

在歸併排序中,相等的元素的順序不會改變,所以它是穩定的演算法。

def merge(left_list, right_list):

left = 0

right = 0

result =

while left < len(left_list) and right < len(right_list):

if left_list[left] <= right_list[right]:

left += 1

else:

right += 1

result += left_list[left:]

result += right_list[right:]

return result

def merge_sort(input_list):

if len(input_list) <= 1:

return input_list

mid = len(input_list) // 2

left_list = merge_sort(input_list[:mid])

right_list = merge_sort(input_list[mid:])

return merge(left_list, right_list)

'''

八大排序演算法python實現

1.氣泡排序 氣泡排序重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越大的元素會經由交換慢慢 浮 到數列的頂端,故名。步驟 比較相鄰的元素。如果第乙個比第二個大,就交...

八大排序演算法

1.直接插入排序 原理 將陣列分為無序區和有序區兩個區,然後不斷將無序區的第乙個元素按大小順序插入到有序區中去,最終將所有無序區元素都移動到有序區完成排序。要點 設立哨兵,作為臨時儲存和判斷陣列邊界之用。實現 void insertsort node l,int length void shell ...

八大排序演算法

一 概述 八大排序演算法包括 1 插入排序之直接插入排序 straight insertion sort 2 插入排序之希爾排序 shells sort 3 選擇排序之簡單選擇排序 selection sort 4 選擇排序之堆排序 heap sort 5 交換排序之氣泡排序 bubble sort...