冒泡法python實現

2021-09-13 19:27:02 字數 1102 閱讀 5221

#!/usr/bin/env python

# -*- coding:utf8 -*-

def bubble_sort(alist):

# 結算列表的長度

n = len(alist)

# 外層迴圈控制從頭走到尾的次數

for j in range(n - 1):

# 用乙個count記錄一共交換的次數,可以排除已經是排好的序列

count = 0

# 內層迴圈控制走一次的過程

for i in range(0, n - 1 - j):

# 如果前乙個元素大於後乙個元素,則交換兩個元素(公升序)

if alist[i] > alist[i + 1]:

# 交換元素

alist[i], alist[i + 1] = alist[i + 1], alist[i]

# 記錄交換的次數

count += 1

# count == 0 代表沒有交換,序列已經有序

if 0 == count:

break

if __name__ == '__main__':

alist = [54, 26, 93, 77, 44, 31, 44, 55, 20]

print("原列表為:%s" % alist)

bubble_sort(alist)

print("新列表為:%s" % alist)

內層迴圈需要注意理解的:

# 氣泡排序要排序n個數,由於每遍歷一趟只排好乙個數字,

# 則需要遍歷n-1趟,才能將n個數字排好;所以最外層迴圈是要迴圈n-1次

# #每次排序乙個數字的時候,假設它前面已經有i個數字已經排好了,由於將n個數字

# 排好需要n-1次,此時已經排好i個數字了,排下乙個數字需要遍歷n-1-i次

## 排第乙個數,n-1次

# 排第2個數,n-2次

# ...

# 排第i個數,n-i次

python冒泡法程式設計 Python實現氣泡排序法

python氣泡排序演算法的運作如下 1.比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。2.對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。3.針對所有的元素重複以上的步驟,除了最後乙個。4.持續每次對越來越少的元素重複上面的步驟,直到沒有任何...

Python學習 實現《氣泡排序法》

演算法思想 step1 將第乙個資料和第二個進行比較,若第乙個資料大於第二的資料,則將第乙個資料 大數 和第二個資料 小數 交換位置。再將第二個資料和第三個比較,若第二個資料大於第三個資料,交換資料。依次類推,直到最大的數排到最後的位置上。第1個迴圈結束。step2 將第乙個資料和第二個進行比較,若...

C和Python實現冒泡法排序

首先我們看冒泡法排序的原理,假設有乙個包含6個數字的陣列 其思路為 每次將相鄰兩個數比較,將小的調到前面,如果有6個數 8,7,5,4,2,0。第一次先將最前面的兩個數8和7對調 看下圖 第二次將第二個數和第三個數 8和5 對調.如此總計進行了5次,得到7 5 4 2 0 8的順序,可以看到 最大的...