拿li=[1,3,45,6,78,9,4]
來舉例
空間複雜度o(n的2次方)
原理:例如你把一組資料從頭開始依次遍歷過去把最大的或者最小的放在末尾,除了最後乙個每個依次進行遍歷
def bubble_sort(li):
for i in range(len(li)-1):
flag = true
for j in range(len(li)-1-i):
if li[j] > li[j+1]:
li[j], li[j+1] = li[j+1], li[j]
flag = false
if flag:
return
bubble_sort(li)
空間複雜度o(n的2次方)
速度比冒泡快一點
原理:例如你把一籃子蘋果讓你從大到小進行排序,你就算先拿出乙個,再拿出第二個和第乙個比按大小擺放左還是右,再拿第三個和之前已經拍好順序的佇列進行對比放置合適位置,依次進行
def select_sort(li):
for i in range(len(li)):
minloc = i
for j in range(i+1, len(li)):
if li[minloc] > li[j]:
li[minloc], li[j] = li[j], li[minloc]
select_sort(li)
空間複雜度o(n的2次方)
速度比選擇快一點
原理:例如打牌手牌先抽出,再所有排進行排序,依次抽出依次進行排序替換
在學習過程中有什麼不懂得可以加我的
python學習扣扣qun,784758214
與你分享python企業當下人才需求及怎麼從零基礎學習好python,和學習什麼內容
def insert_sort(li):
for i in range(1, len(li)):
tmp = li[i]
j = i - 1
while j >= 0 and li[j] > tmp:
li[j+1] = li[j]
j = j - 1
li[j+1] = tmp
insert_sort(li)
時間複雜度:o(nlogn)
原理:有點類似二叉樹取出乙個值以他為基準大的放右邊,小的放左邊,然後依次遞迴下去
#遞迴呼叫的函式
def partition(data, left, right):
tmp = data[left]
while left < right:
while left < right and data[right] >= tmp:
right = right - 1
data[left] = data[right]
while left < right and data[left] <= tmp:
left = left + 1
data[right] = data[left]
data[left] = tmp
return left
#遞迴函式
def quick_sort(data, left, right):
if left < right:
mid = partition(data, left, right)
quick_sort(data, left, mid)
quick_sort(data, mid + 1, right)
python 常用排序演算法
常用的排序演算法 氣泡排序,插入排序,歸併排序,快速排序 基數排序 堆排序,直接選擇排序。常用的查詢演算法 順序查詢,二分查詢,雜湊表查詢和二叉樹查詢 其中我們應該重點掌握二分查詢 歸併排序和快速排序,保證能隨時正確 完整地寫出它們的 同時對其他的查詢和排序必須能準確說出它們的特點 對其平均時間複雜...
常用排序演算法的Python實現
排序演算法穩定性的簡單形式化定義為 如果ai aj,排序前ai在aj之前,排序後ai還在aj之前,則稱這種排序演算法是穩定的。通俗地講就是保證排序前後兩個相等的數的相對順序不變。對於不穩定的排序演算法,只要舉出乙個例項,即可說明它的不穩定性 而對於穩定的排序演算法,必須對演算法進行分析從而得到穩定的...
python常見排序演算法 python常用排序演算法
def bubble sort alist 氣泡排序 n len alist for i in range n 1 外層迴圈次數 for j in range n 1 i 這裡 記得要 i if alist j alist j 1 alist j alist j 1 alist j 1 alist ...