話不多說,讓我們從最基本的排序算法開始吧
插入排序
如下圖所示,插入排序的實現思路顧名思義,就是 不斷地在一個已經是有序的數組中,尋找合適位置并插入新元素 。
具體實現步驟為:
首先我們把整個數組拆分為有序區(qū)間和未排序區(qū)間,有序區(qū)間在插入排序一開始只有一個元素,就是數組的第一個元素。
接在有序區(qū)間之后的一個元素就是準備插入的元素,在圖中就是標為綠色的元素,在有序區(qū)間內尋找位置并插入。
其尋找邏輯為:從后往前依次進行比較,如果待插入元素大于當前元素,則將待插入元素插入到當前元素的后一位,如果待插入元素小于當前元素,則將當前元素后移一位。不斷重復該過程直至到數組的最后一位
其實現的具體代碼為:
def insertion_sort(a):
length = len(a)
if length <=1:
return
for i in range(1,length):
j = i-1
value = a[i]
while j >=0:
if a[j]
??? return a時間復雜計算為:我們需要將整個數組遍歷一遍,所以這一部分為O(n),在每一次遍歷中都要執(zhí)行一次插入操作,其時間復雜度為O(n),所以總時間復雜度為O(n2)
選擇排序
選擇排序跟插入排序算法類似,都是將數組分為有序區(qū)間和未排序區(qū)間,區(qū)別在于插入排序是將一個新元素插入到有序區(qū)間內,而選擇排序則是在未排序區(qū)間中找到最小元素,并交換到有序區(qū)間之后。
實現代碼為:
def selection_sort(a):
length = len(a)
if length <=1:
return
for i in range(0,length-1):
min_value = a[i]
min_index = i
j = i+1
while j
< min_value:
min_value = a[j]
min_index = j
j += 1
a[i],a[min_index] = a[min_index],a[i]
??? return a時間復雜度計算:數組長度為n,一共需要尋找n次最小值,每次尋找最小值都要遍歷未排序區(qū)間一次,其時間復雜度為O(n),乘以n次為O(n2)
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

