程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python數據結構與算法之冒泡排序

編輯:Python

1.冒泡排序

冒泡排序屬於交換排序
兩兩比較大小、交換位置
分為升序和降序排列

2.算法

升序

n個數從左至右,編號從0開始到n-1,索引0和1的值比較,如果索引0大,則交換兩者,如果索引1大,則不交換。繼續比較索引1和2的值,將大值放在右側,直至n-2和n-1比較完,第一輪比較完成。第二輪從索引0比較n-2,因為最右側位置上已經是最大值。依次類推,每一輪都會減少最右側的不參與比較,直至剩下最後2個數比較

降序

和升序相反

nums = [1, 2, 9, 6, 3, 8, 5, 7, 4] #定義一個數組
length = len(nums) #數組長度
for i in range(length):
flag = True #假定達到目標順序
for j in range(length-1-i):
if nums[j] > nums[j+1]:
temp = nums[j]
nums[j] = nums[j+1]
nums[j+1] = temp
swap_count += 1
flag = False #說明交換過,本躺兩兩比較中出現了順序不對的情況
if flag:
break
print(nums)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
33
14

冒泡排序總結

冒泡法需要數據一輪輪比較
可以設定一個標記判斷此輪是否有數據交換發生,如果沒有發生交換,可以結束排序,如果發生交換,繼續下一輪排序
最差的排序情況是,初始順序與目標順序完全相反,遍歷次數1,…,n-1之和n(n-1)/2
最好的排序情況是,初始順序與目標順序完全相同,遍歷次數n-1
時間復雜度O(n^2)


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved