lowB三人組演算法 氣泡排序 選擇排序 插入排序

2022-05-06 14:54:11 字數 1263 閱讀 7191

時間複雜度: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...