時間複雜度:o(n2) 演算法穩定
**實現點:時時比較,時時交換
def bubble_sort(li):for i in range(len(li)-1): #第i趟
exchange = false
for j in range(len(li)-i-1):
if li[j] > li[j+1]:
li[j], li[j+1] = li[j+1], li[j]
exchange = true
if not exchange: #這裡屬於優化,也就是如果這次迴圈中沒有發生一次交換,那麼此時已經是有序的
return
li = list(range(10000))
random.shuffle(li)
bubble_sort(li)
時間複雜度:o(n2) 演算法穩定?
**實現點:時時儲存小值索引,一趟後交換
def select_sort(li):for i in range(len(li)-1): # i是第幾趟
min_loc = i
for j in range(i+1, len(li)):
if li[j] < li[min_loc]:
min_loc = j
li[i], li[min_loc] = li[min_loc], li[i]
print(li)
li = [3,4,2,1,5,6,8,7,9]
print(li)
select_sort(li)
時間複雜度:o(n2) 演算法穩定?
**實現點:記錄手裡牌的下標和抓到牌的值,利用冒泡的方式去把抓到牌往左冒
def insert_sort(li):for i in range(1, len(li)): #i 表示摸到的牌的下標
tmp = li[i]
j = i - 1 #j指的是手裡的牌的下標
while j >= 0 and li[j] > tmp: #小於當前手牌,往左冒
li[j+1] = li[j]
j -= 1
li[j+1] = tmp
print(li)
li = [3,2,4,1,5,7,9,6,8]
print(li)
insert_sort(li)
排序演算法之low B三人組
列表排序 將無序列表變成有充列表 應用場景 各種榜單,各種 給二分法排序使用,給其他演算法使用 輸入無序列表,輸出有序列表 公升序或降序 排序low b三人組 首先,列表每兩個相鄰的數做比較,如果前邊的數比後邊的數大,那麼交換這兩個數 def bubble sort l1 for i in rang...
演算法3(low B三人組)
首先,列表每兩個相鄰的數,如果前邊的比後邊的大,那麼交換這兩個數 時間複雜度 o n2 def bubble sort lis 氣泡排序 param lis 無序列表 return 有序的從小到大的列表 for i in range 0,len lis 1 可能存在列表已經排好的情況,加標記 exc...
演算法1 排序LowB三人組
import random from timewrap import cal time defbubble sort li for i in range len li 1 i 表示趟數 第 i 趟時 無序區 0,len li i for j in range 0,len li i 1 if li j...