Python氣泡排序及優化(面試題之一)

2021-08-30 13:14:45 字數 1188 閱讀 6647

大學畢業那會面試碰到這麼一題目,寫個冒泡,然後讓你優化。

氣泡排序(bubble sort),是一種電腦科學領域的較簡單的排序演算法。

它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果他們的順序(如從大到小、首字母從a到z)錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素已經排序完成。

這個演算法的名字由來是因為越大的元素會經由交換慢慢「浮」到數列的頂端(公升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名「氣泡排序」。

普通**:

mylist = [11, 3, 5, 4, 8, 10, 9, 2, 6]

length = len(mylist)

for i in range(0, length - 1): # 這個迴圈負責設定氣泡排序進行的次數

for j in range(0, length- 1 - i): # j為列表下標

if mylist[j] > mylist[j + 1]:

mylist[j], mylist[j + 1] = mylist[j + 1], mylist[j]

print("final:", mylist)

優化**:

思想:新增標誌位,若這一輪沒有發生交換,則代表已經排序完畢。

mylist = [11, 3, 5, 4, 8, 10, 9, 2, 6]

length = len(mylist)

for i in range(0, length - 1): # 這個迴圈負責設定氣泡排序進行的次數

flag = 0

for j in range(0, length - 1 - i): # j為列表下標

if mylist[j] > mylist[j + 1]:

mylist[j], mylist[j + 1] = mylist[j + 1], mylist[j]

flag += 1

print(mylist, flag)

if 0 == flag:

break

print("another loop!")

print("final:", mylist)

參考資料:氣泡排序/4602306?fr=aladdin

python 氣泡排序及優化版

coding utf 8 氣泡排序 import random print 氣泡排序 print 隨機生成乙個列表 list for i in range 8 num random.choice range 100 print list print 氣泡排序後 for i in range len ...

氣泡排序 python實現及優化

氣泡排序原理 1.比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個 否則,位置不變。2.對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。最後的元素應該會是最大的數。3.針對所有的元素重複以上的步驟,除了最後乙個。4.持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較...

氣泡排序及優化

氣泡排序的基本思路是 每次將相鄰兩個數比較,將小的調到前頭 本例按照從小到大排序 按此規律如果有n個數,則要進行n 1趟比較。在第1趟比較中要進行n 1次兩兩比較,在第 j 趟比較中要進行 n j 次兩兩比較。實現如下 include define n 10 int main for i 0 i n...