1. 程式人生 > 程式設計 >Python實現氣泡排序演算法的完整例項

Python實現氣泡排序演算法的完整例項

氣泡排序:顧名思義就是(較小的值)像泡泡一樣往上冒,(大的值)往下沉。

實現原理:依次將相鄰兩個數值進行比較,較小的數值移到左邊,較大的數值移到右邊,依次比較完第一輪後,最大的數值應該排在最右邊。然後再繼續重複的比較,直至無數值需要交換,此時排序完成。

例子解釋:

無序列表arr = [7,6,5,3,9,2,8,1,4]

數列長度:len = 9

第一趟排序:

i = 1;

arr = [7,4]

  1. 7>6 =>[6,7,4]數值小的放左邊,數值打的放右邊
  2. 7>5 =>[6,4]
  3. 7>3 =>[6,4]
  4. 7<9 =>[6,4]
  5. 9>2 =>[6,4]
  6. 9>8 =>[6,4]
  7. 9>1 =>[6,4]
  8. 9>4 =>[6,4,9]

第一趟進行了8次交換,即子迴圈比較的次數為j=len-i=9-1=8

至此第一趟冒泡已完成,最大數值9已經排到最右邊。

第二趟排序:

i = 2

arr = [6,9]

  1. 6>5 => [5,9]
  2. 6>3 => [5,9]
  3. 6<7 =>[5,9]
  4. 7>2 =>[5,9]
  5. 7<8 =>[5,9]
  6. 8>1 =>[5,9]
  7. 8>4 =>[5,9]

第二趟進行了7次交換,即子迴圈比較的次數為j=len-i=9-2=7

至此第二趟冒泡已完成,arr = [5,9]。

。。。

接下來也是如此依次比較排序,直至陣列arr = [1,9]

總共進行了8趟排序;

Python程式碼實現:

def bubbleSort(arr):
	# 獲取陣列長度
	arr_len = len(arr)
 # 外部大迴圈=》第幾趟
	for i in range(1,arr_len):
		# 內部迴圈比較=》相鄰數值進行比較
		for j in range(0,arr_len - i):# 每次內迴圈的次數都需要總長度減去已排好位置的值的數量
			if arr[j] > arr[j+1]: # 左右比較
				arr[j],arr[j+1] = arr[j+1],arr[j] # 將數值大的放右邊,數值小的放左邊


arr = [64,34,25,12,22,11,90]
bubbleSort(arr)
print('排序後:')
for i in range(len(arr)):
	print('%d'%arr[i],end=' ')

總結

到此這篇關於Python實現氣泡排序演算法的文章就介紹到這了,更多相關Python實現氣泡排序演算法內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!