冒泡排序和選擇排序
首先引用一下百度百科對於冒泡算法的定義:
冒泡排序算法的原理如下:
-
比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
-
對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最后一對。在這一點,最后的元素應該會是最大的數。
-
針對所有的元素重復以上的步驟,除了最后一個。
-
持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。
在很多計算機語言中冒泡算法都是一種經典的排序算法,在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)