排序演算法網上看一大把,今天試試牛刀,比較下快速排序和氣泡排序
#快速排序
"""對於一串串行,首先從中選取乙個數,凡是小於這個數的值就被放在左邊一摞,
凡是大於這個數的值就被放在右邊一摞。然後,繼續對左右兩摞進行快速排序。
直到進行快速排序的序列長度小於 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.線性對...