'''
氣泡排序:
1)比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個的位置。
2)對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。完成一次完整的比較和交換位置時,最後的元素應該會是最大的數。
3)針對所有的元素重複以上的步驟,除了最後乙個。
4)持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
時間複雜度:o(n^2)
穩定性:穩定排序演算法
'''def
bubble
(mylist)
:#使用雙重迴圈;外層迴圈控制次數。內層迴圈比較大小
for i in
range
(len
(mylist)):
for j in
range
(i+1
,len
(mylist)):
#如果前乙個值大於後乙個則交換前後值得順序
if mylist[i]
> mylist[j]
: mylist[i]
,mylist[j]
= mylist[j]
,mylist[i]
return mylist
if __name__ ==
'__main__'
: mylist =[2
,3,4
,2,1
,7,8
,5,99
,0,1
,45]print
(bubble(mylist)
)
'''
選擇排序:
初始狀態:無序區為r[1..n],有序區為空。
1)第1趟排序
在無序區r[1..n]中選出關鍵字最小的(最大的)記錄r[k],將它與無序區的第1個(無需的陣列的第乙個元素一定是有序的)記錄r[1]交換,使r[1..1]和r[2..n]分別變為記錄個數增加1個的新有序區和記錄個數減少1個的新無序區。
2)重複上述的操作,每一次從後面無序的陣列取出乙個元素放進前面的有序陣列中,之後有序陣列個數增加,無序陣列個數減少
…… i)第i趟排序
第i趟排序開始時,當前有序區和無序區分別為r[1..i-1]和r(i..n)。該趟排序從當前無序區中選出關鍵字最小的記錄 r[k],將它與無序區的第1個記錄r交換,使r[1..i]和r分別變為記錄個數增加1個的新有序區和記錄個數減少1個的新無序區。
時間複雜度:o(n^2)
穩定性:不穩定排序演算法
'''def
selection
(mylist)
:#迴圈,將第乙個元素下標作為最小值並記錄
for i in
range
(len
(mylist)):
min= i
#使用迴圈和後邊的值一次比較,若有比該值小的,則修改其下標
for j in
range
(i+1
,len
(mylist)):
if mylist[
min]
> mylist[j]
:min
= j #交換值,將最小的放在第乙個;之後從第二個元素進行繼續尋找最小的元素
mylist[i]
,mylist[
min]
= mylist[
min]
,mylist[i]
return mylist
if __name__ ==
'__main__'
: mylist =[2
,3,4
,2,1
,7,8
,5,99
,0,1
,-1,
-6,45
]print
(selection(mylist)
)
Python 氣泡排序 選擇排序
依次輸入n個數,進行氣泡排序 氣泡排序法,即兩個相鄰的進行比較,比較之後換位置 def bubblesort arr n len arr for i in range n for j in range 0 n i 1 if arr j arr j 1 arr j arr j 1 arr j 1 ar...
python棧 氣泡排序 選擇排序
有些地方稱為堆疊,是一種容器,可存入資料元素 訪問元素 刪除元素,它的特徵在於只能允許在容器的一端進入加入資料和輸出資料的運算。沒有了位置概念,保證任何時候可以訪問 刪除的元素都是此前最後存入的那個元素,確定了一種預設的訪問順序。棧可以用順序表實現,也可以用鍊錶實現。stack 建立 個新的空棧 p...
氣泡排序和選擇排序 python
排序方法有很多,實際和面試中我們面對最多可能就是氣泡排序和選擇排序 氣泡排序 在給定資料列表中從第乙個開始逐一和下乙個值進行比較,如果發現下乙個值大於自己就調換下位置,以此類推,到最後便可以實現從小到大的排序 選擇排序 在給定資料列表中找到最小的乙個數值,然後依次和後面的進行對比,比如我們認為最左側...