首先,列表每兩個相鄰的數,如果前邊的比後邊的大,那麼交換這兩個數……
時間複雜度:o(n2)
defbubble_sort(lis):
"""氣泡排序
:param lis:無序列表
:return: 有序的從小到大的列表
"""for i in range(0, len(lis) - 1):
#可能存在列表已經排好的情況,加標記
exchange =false
for j in range(0, len(lis) - 1 -i):
if lis[j] > lis[j + 1]:
lis[j], lis[j + 1] = lis[j + 1], lis[j]
exchange =true
ifnot
exchange:
return
lis
return
lisret = bubble_sort([1,2,3,4,5])
print(ret)
一趟遍歷記錄最小的數,放到第乙個位置;
再一趟遍歷記錄剩餘列表中最小的數,繼續放置;
……
時間複雜度:o(n2)
defselect_sort(lis):
"""插入排序
:param lis:無序列表
:return: 有序的從大到小排序
"""for i in range(len(lis) - 1):
#第i趟:有序區li[0:i]無序區li[i,n]
min_loc =i
for j in range(i + 1, len(lis)):
if lis[min_loc] >lis[j]:
min_loc =j
lis[min_loc], lis[i] =lis[i], lis[min_loc]
return
lisli = [1, 3, 2, 4, 5, 7, 6, 8, 9, 0]
ls =select_sort(li)
print(ls)
列表被分為有序區和無序區兩個部分。最初有序區只有乙個元素。
每次從無序區選擇乙個元素,插入到有序區的位置,直到無序區變空。
時間複雜度:o(n2)
definsert_sort(lis):
for i in range(1, len(lis)):
#i既表示趟數,也表示摸到的牌的下標
tmp =lis[i]
#j是i前面的數的下標
j = i - 1
while j >= 0 and tmp lis[j + 1] =lis[j]
j = j - 1lis[j + 1] =tmp
return
lisli = [1, 3, 2, 4, 5, 7, 6, 8, 9, 0]
ls =insert_sort(li)
print(ls)
排序演算法之low B三人組
列表排序 將無序列表變成有充列表 應用場景 各種榜單,各種 給二分法排序使用,給其他演算法使用 輸入無序列表,輸出有序列表 公升序或降序 排序low b三人組 首先,列表每兩個相鄰的數做比較,如果前邊的數比後邊的數大,那麼交換這兩個數 def bubble sort l1 for i in rang...
演算法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...
第三課 排序演算法LowB三人組
tags categories 第二節 氣泡排序 第三節 選擇排序 第四節 插入排序 排序 將一組 無序 的記錄序列調整為 有序 的記錄序列 列表排序 將無序列表變為有序列表。輸入 列表 輸出 有序列表 公升序與降序 內建排序函式 sort 榜單 紅黑榜 使用 評率等 常見的排序演算法如下 排序lo...