冒泡排序(bubble_sort)——Python實現


# 冒泡排序
# 作用:對給出的n個順序不定的數進行排序
# 輸入:任意數組A
# 輸出:按順序排列的數組A
 
# 冒泡排序過程
# 第一趟:以第一個數為基准,從最后一位數開始,依次與它比較,
#               若大於它,則交換,若小於它,則繼續判斷前一個數
#               完成一趟后,這個基准數(即第一個數)是所有數里最大的
# 第二趟:以第二個數為基准,從最后一位數開始,依次與它比較,
#               若大於它,則交換,若小於它,則繼續判斷前一個數
#               完成一趟后,這個基准數(即第二個數)是除了第一個數之外最大的
# 以此類推,直到以最后一個數位基准時,得到倒序的數組
 
 1 # 在此修改初始數據
 2 A = [12,56,92,-1,5,110,92,999,-39,21,76,33,56]
 3 
 4 print('您的初始數據為:')
 5 print(A);print('\n'*1)      # print('\n'*1) 意思為空一行,僅起使輸出美觀的作用
 6 n = len(A)          # 用n獲取數組長度
 7 i = 0               # 外循環時數組的下標
 8 j = n-1             # 內循環時數組的下標
 9 
10 while i <= n-1:
11     while j != i:
12         if A[j] > A[i]:
13             temp = A[i]
14             A[i] = A[j]
15             A[j] = temp
16             j = j - 1
17         else:
18             j = j - 1
19     j = n -1        # 重置j,使得下次循環能j能從最后一個數開始
20     i = i + 1       # 完成一次循環后,第i個數已被確定,是當前剩余的數中最大的
21     print(A)
22  
23 print('\n'*1)       
24 print('冒泡排序的結果:')       # 輸出的數據是逆向排序的
25 print(A)
26 
27 A.reverse()         # python自帶的函數,使逆序
28 print('取倒序后數據為:')     
29 print(A)

運行結果:

您的初始數據為:
[12, 56, 92, -1, 5, 110, 92, 999, -39, 21, 76, 33, 56]
冒泡排序的結果:
[999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]
取倒序后數據為:
[-39, -1, 5, 12, 21, 33, 56, 56, 76, 92, 92, 110, 999]

該算法具體實現過程中數組A的變化情況:

其中,下划線___表示的是在每一趟(每一次外循環)確定下來的數

 1 [999, 56, 92, -1, 5, 110, 92, 76, -39, 21, 56, 33, 12]
 2 [999, 110, 92, -1, 5, 92, 76, 56, -39, 21, 56, 33, 12]
 3 [999, 110, 92, -1, 5, 92, 76, 56, -39, 21, 56, 33, 12]
 4 [999, 110, 92, 92, 5, 76, 56, 56, -39, 21, 33, 12, -1]
 5 [999, 110, 92, 92, 76, 56, 56, 33, -39, 21, 12, 5, -1]
 6 [999, 110, 92, 92, 76, 56, 56, 33, -39, 21, 12, 5, -1]
 7 [999, 110, 92, 92, 76, 56, 56, 33, -39, 21, 12, 5, -1]
 8 [999, 110, 92, 92, 76, 56, 56, 33, -39, 21, 12, 5, -1]
 9 [999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]
10 [999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]
11 [999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]
12 [999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]
13 [999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]

簡而言之,冒泡排序法就是每次找出剩余的數中最大的一個,並按順序存儲下來。

 

 

 

 

 


免責聲明!

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



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