11.28-學習筆記
設定flag在一定程度上優化了氣泡排序
#實現氣泡排序
#氣泡排序就是相鄰兩個數比較,大的後移,然後一輪過去後,大的會在最後乙個位置
defbubble_sort
(list):
for i in
range(0
,len
(list))
:#輪數
flag=
false
for j in
range(0
,len
(list
)-i-1)
:#每輪的次數if(
list
[j]>
list
[j+1])
:#在這裡可以進行優化,實際上在後面幾次中就已經有序了,但是還會進行排序。
temp=
list
[j]list
[j]=
list
[j+1
]list
[j+1
]=temp
flag=
true
if(flag==
false):
break
print
("第%s輪"%,
list
)if __name__ ==
'__main__'
:list=[
]for i in
range(10
):list
int(
input
('請輸入你想排序的數字:'))
) bubble_sort(
list
)
未設定flag執行截圖
# 快速排序
defquicksort
(list):
iflen
(list
)<=1:
return
list
mid =
list
[len
(list)//
2]#把中點當做基準
left =
#定義乙個left空列表
right =
#定義乙個right空列表
list
.remove(mid)
#移除中間結點
for item in
list
:#這裡實際就是分割槽(實現了右邊的數大於基準,左邊的數小於基準)
if item >= mid:
#大於mid值的放在right裡面
else
:#小於mid值的放在left裡面
return quicksort(left)
+[mid]
+ quicksort(right)
#遞迴if __name__ ==
'__main__'
:list=[
1,5,
3,6,
7,10,
9]print
(quicksort(
list
))
python實現快速排序 冒泡
快速排序 首先任意選取乙個資料 通常選用陣列的第乙個引數 作為關鍵資料,然後將比它小的數放在它前面,比它大的數放在後面,這個過程稱之為快速排序 def quick sort l if len l 1 return l left right base l.pop for x in l if x els...
C 實現快速排序和氣泡排序
快速排序思路 快速排序之所比較快,因為相比氣泡排序,每次交換是跳躍式的。每次排序的時候設定乙個基準點,將小於等於基準點的數全部放到基準點的左邊,將大於等於基準點的數全部放到基準點的右邊。這樣在每次交換的時候就不會像氣泡排序一樣每次只能在相鄰的數之間進行交換,交換的距離就大的多了。因此總的比較和交換次...
go實現氣泡排序和快速排序
專案結構 氣泡排序演算法,原始檔bubblesort.go package bubblesort 氣泡排序 func bubblesort values int if flag true 快速排序演算法,原始檔qsort.go package qsort 快速排序 func quicksort va...