列表排序:將無序列表變成有充列表
應用場景:各種榜單,各種**,給二分法排序使用,給其他演算法使用
輸入無序列表,輸出有序列表(公升序或降序)
排序low b三人組
首先,列表每兩個相鄰的數做比較,如果前邊的數比後邊的數大,那麼交換這兩個數
defbubble_sort(l1):
for i in range(len(l1)-1):
for j in range(len(l1)-i-1):
if l1[j] > l1[j+1]:
l1[j],l1[j+1]=l1[j+1],l1[j]
return l1
氣泡排序的優化
如果氣泡排序中執行一趟而沒有交換,則列表已經是有序狀態,可以直接結束排序
defbubble_sort_1(l1):
for i in range(len(l1)-1):
flag=false
for j in range(len(l1)-i-1):
if l1[j] > l1[j+1]:
l1[j],l1[j+1]=l1[j+1],l1[j]
flag=true
ifnot
flag:
return l1
一趟遍歷記錄中最小的數,放到第乙個位置
再一趟遍歷記錄剩餘列表中最小的數,繼續放置
defselect_sort(l1):
for i in range(len(l1)-1):
mid=i
for j in range(i+1,len(l1)):
if l1[j] mid=j
l1[mid],l1[i]=l1[i],l1[mid]
return l1
列表被分有有序區和無序區兩個部分.最初有序區只有乙個元素
每次從無序區選擇乙個元素,插入到有序區的位置,直到無序區變空
例如,最初時有乙個無序列表l1=[5,7,4,6,3,1,2,9,8],其使用插入排序時的步驟為:
1.取無序列表l1中的第乙個元素5,放入另乙個有序列表tmp中2.取無序列表l1中的第二個元素7,因為7比5大,把7放入有序列表tmp的第二個位置
3.取無序列表l1中的第三個元素4,因為4比5小,所以把4放入到有序列表tmp的元素5的左邊中,此時有序列表tmp為[4,5,7]
4.取l1中第四個元素6,因為6比5大,又比7小,把6放入到元素5和7之間,此時tmp變成了[4,5,6,7]
...每次從無序區中選擇乙個元素,插入到有序區的某個位置,直到無序區變空
definsert_sort(li):
for i in range(1, len(li)):
tmp =li[i]
j = i - 1 #
手裡最後一張
while j>=0 and li[j]>tmp:
li[j+1]=li[j]
j = j-1li[j+1] =tmp
return li
演算法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...
lowB三人組演算法 氣泡排序 選擇排序 插入排序
時間複雜度 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...