快速排序演算法直觀比較

2021-10-06 03:57:33 字數 864 閱讀 3608

排序演算法網上看一大把,今天試試牛刀,比較下快速排序和氣泡排序

#快速排序

"""對於一串串行,首先從中選取乙個數,凡是小於這個數的值就被放在左邊一摞,

凡是大於這個數的值就被放在右邊一摞。然後,繼續對左右兩摞進行快速排序。

直到進行快速排序的序列長度小於 2 (即序列中只有乙個值或者空值)

"""def quick_sort(lis):

if len(lis)<2:

return lis

else:

base=lis[0]

left=[i for i in lis[1:] if i base]

return quick_sort(left)+[base]+quick_sort(right)

#氣泡排序

def bouble_sort(lis):

"""從左向右,兩兩比較,如果左邊元素大於右邊,就交換兩個元素的位置。

:param lis:

:return:

"""i=j=0

leng=len(lis)-1

flag = 1

while ilis[j+1]:

lis[j],lis[j+1]=lis[j+1],lis[j]

flag = 0

j+=1

if flag:

break

i+=1

return lis

##調式

if __name__=="__main__":

lis=[3,2,1,4,6,7,8]

print(quick_sort(lis))

print( bouble_sort(lis))

排序演算法 快速排序(直觀總結分析)

快速排序演算法是比較經典的排序演算法。但其中心思想還是比較簡單的,就是 挖坑 和 填坑 的過程。這裡的 坑 經常會被隨機化,以防止快排的最壞情況出現。當然,我們拿到乙個數列後,也可以先將該數列整體隨機化,從而避免每次都要隨機 選坑 今天重新複習了一下,也總結了不同形式的快排 總結如下 1.常見的快速...

冒泡,選擇,快速排序演算法比較

include using namespace std void datainput int p,int c 輸入函式 void datacopy int dest1,int dest2,int dest3,int source,int c 複製函式 void datashow int p,int ...

快速排序比較次數 各種排序演算法總結

各種排序演算法的穩定性,時間複雜度和空間複雜度總結 我們比較時間複雜度函式的情況 時間複雜度函式o n 的增長情況 所以對於n較大的排序記,一般的選擇都是時間複雜度為o nlog2n 的排序方法。時間複雜度來說 1.平方階o n2 排序 各類簡單排序 直接插入排序,直接選擇排序和氣泡排序 2.線性對...