演算法3(low B三人組)

2022-05-22 22:21:10 字數 1515 閱讀 7296

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

時間複雜度:o(n2)
def

bubble_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)
def

select_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)
def

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