python 冒泡排序


比如某數組

a = [12, 35, 99, 18, 1]

將其從小到大冒泡排序 則

第一趟:

第一次:a = [12,35,99,18,1] //12與35比較

第二次:a = [12,35,99,18,1]//35與99比較

第三次:a = [12,35,18,99,1]//99與18比較

第四次:a = [12,35,18,1,99]//99與76比較 

至此第一趟過后 最大的數在末尾 99不再參與比較

第二趟:a = [12,18,1,35,99]//35是[12,18,1,35]中最大數 將其放到末尾

第三趟:a = [12,1,18,35,99]//18是[12,1,18]中最大數 將其放到末尾

第四躺:a = [1,12,18,35,99]//12是[12,1]中最大數 將其放到末尾

所以冒泡排序后得結果是

a = [1,12,18,35,99]

其時間復雜度是O(n^2)

因為遍歷了所有數n,在n的情況下交換n-1次 復雜度就是兩個相乘取n^2

def bubble_sort(alist):
    for i in range(len(alist)): #循環次數
        # 跳過后面已經排好序的元素
        for j in range(len(alist)-1-i):#將這一次的所有數遍歷
            if alist[j] > alist[j+1]:#判斷前后兩數的大小 並將其交換
                alist[j],alist[j+1] = alist[j+1],alist[j]
    return alist
a = [12,35,99,18,1]
print(bubble_sort(a))

 


免責聲明!

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



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