排序演算法之low B三人組

2022-08-14 21:45:12 字數 1604 閱讀 7907

列表排序:將無序列表變成有充列表

應用場景:各種榜單,各種**,給二分法排序使用,給其他演算法使用

輸入無序列表,輸出有序列表(公升序或降序)
排序low b三人組

首先,列表每兩個相鄰的數做比較,如果前邊的數比後邊的數大,那麼交換這兩個數

def

bubble_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

氣泡排序的優化

如果氣泡排序中執行一趟而沒有交換,則列表已經是有序狀態,可以直接結束排序

def

bubble_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

一趟遍歷記錄中最小的數,放到第乙個位置

再一趟遍歷記錄剩餘列表中最小的數,繼續放置

def

select_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]

...每次從無序區中選擇乙個元素,插入到有序區的某個位置,直到無序區變空

def

insert_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...