python基礎:冒泡和選擇排序算法實現


冒泡排序和選擇排序
 
首先引用一下百度百科對於冒泡算法的定義:
 
冒泡排序算法的原理如下:
  1. 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
  2. 對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最后一對。在這一點,最后的元素應該會是最大的數。
  3. 針對所有的元素重復以上的步驟,除了最后一個。
  4. 持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。

 

在很多計算機語言中冒泡算法都是一種經典的排序算法,在python中也可以輕松實現,並且代碼更短,下面看代碼:

#冒泡排序
def bubble_sort(lt):
    for i in range(len(lt)-1):         #外部循環,用來表示冒泡進行的次數
        for j in range(len(lt)-i-1):
        #內部循環,如果從下標為0的元素開始匹配,j下標一直到倒數第二個元素
            if lt[j] > lt[j+1]:
                lt[j], lt[j+1] = lt[j+1], lt[j]
                #上面兩行代碼-如果lt列表中下標為j的值大於下標為j+1的值,
                #就調換位置,相當於lt[j] = lt[j+1], lt[j+1] = lt[j]
    print(lt)     #打印列表
lt = [9, 8, 6, 4, 5, 1, 3, 10]    #首先建一個列表
bubble_sort(lt)  #調用函數輸出經過冒泡排序后的列表

選擇排序:對比數組中前一個元素跟后一個元素的大小,如果后面的元素比前面的元素小則用一個變量k來記住他的位置,接着第二次比較,前面“后一個元素”現變成了“前一個元素”,繼續跟他的“后一個元素”進行比較如果后面的元素比他要小則用變量k記住它在數組中的位置(下標),等到循環結束的時候,我們應該找到了最小的那個數的下標了,然后進行判斷,如果這個元素的下標不是第一個元素的下標,就讓第一個元素跟他交換一下值,這樣就找到整個數組中最小的數了。然后找到數組中第二小的數,讓他跟數組中第二個元素交換一下值,以此類推。

#選擇排序
list1 = [12, 3, 6, 2, 5, 7, 8, 9] #首先定義一個列表
def quick_sort(list1):
    for i in range(len(list1)-1): #默認從0下標開始
        x = i   #建立一個信號量
        for j in range(i+1, len(list1)):#從列表第i+1個元素開始
            if list1[x] > list1[j]:#一旦匹配到小於下標為i的元素
                x = j
        list1[i], list1[x] = list1[x], list1[i]
        #將元素賦值給信號量x,依次循環,遇到更小的,繼續交換元素
    print(list1)
quick_sort(list1)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM