快速排序:首先任意選取乙個資料(通常選用陣列的第乙個引數)作為關鍵資料,然後將比它小的數放在它前面,比它大的數放在後面,這個過程稱之為快速排序
defquick_sort(l):
if len(l) <= 1:
return
l left =
right =
base=l.pop()
for x in
l:
if x else
:
return quick_sort(left)+[base]+quick_sort(right)
七行**實現快速排序
defquick_sort(l):
if len(l) <= 1:
return
l base =l[0]
left = [x for x in l[1:] if x right = [x for x in l[1:] if x >=base]
return kuaisu_sort(left) + [base] + kuaisu_sort(right)
l = [5,8,6,3,55,9]
print(quick_sort(l))
氣泡排序:直觀的意思就是氣泡越大冒的越快
間接的說就是響鈴的兩個數字先進行比較,如果兩個數字的順序不對,就進行調換
def func(ll):
num = len(ll) # num = 6
for i in range(num): # 取出每乙個元素
for j in range(0, num - i - 1):
if ll[j] > ll[j + 1]:
ll[j], ll[j + 1] = ll[j + 1], ll[j]
ll = [5, 45, 65, 95, 3, 521]
func(ll)
print(ll)
6行**實現氣泡排序
defbubble_sort(l):
#外層迴圈
for i in range(len(l)-1):
#內層比較迴圈,j為索引
for j in range(len(l)-i -1):
if l[j]>l[j+1]:
l[j],l[j+1]=l[j+1],l[j]
return l
**如下:
def find(l,aim,start = 0,end =none):end = len(l) if end is none else
end mid_index = (end - start)//2 +start
if start <=end:
if l[mid_index] return find(l,aim,start =mid_index+1,end=end)
elif l[mid_index] >aim:
return find(l, aim, start=start, end=mid_index-1)
else
:
return
mid_index
else
:
return
'找不到這個值
'ret= find(l,44)
print(ret)
注:二分查詢演算法 必須處理有序的列表
python 實現氣泡排序和快速排序
11.28 學習筆記 設定flag在一定程度上優化了氣泡排序 實現氣泡排序 氣泡排序就是相鄰兩個數比較,大的後移,然後一輪過去後,大的會在最後乙個位置 defbubble sort list for i in range 0 len list 輪數 flag false for j in range...
python實現插入排序 氣泡排序 快速排序
a 2,4,2,6,5,8,5,56,45,3,23 插入排序類似整理撲克牌,將每一張牌插到其他已經有序的牌中適當的位置。插入排序由n 1趟排序組成,對於p 1到n 1趟,插入排序保證從位置0到位置p上的元素為已排序狀態。簡單的說,就是插入排序總共需要排序n 1趟,從index為1開始,講該位置上的...
Python實現排序(冒泡 選擇 快速 插入)
排序是比較常見的演算法了,針對實際資料的特點擊擇合適的排序演算法可以使程式獲得更高的效率,今天來總結一下用python來實現各種排序。氣泡排序是一種很簡單的排序了,名字也很形象 思想 相鄰節點進行兩兩比較,如果左邊的比右邊的大就交換兩個元素的位置,第一輪排序結束後,最大的元素跑到了最右面 接下來對沒...