python 基數 計數 排序

2022-06-11 11:06:11 字數 999 閱讀 4659

#!/usr/bin/python

# 基數排序

# 將列表中的數按照基數進行排序 先排序個位的數 在排序十位的 依次類推可以

def radix_sort(li):

max_mun = max(li) #確定列表中最大的值

it = 0

while 10 ** it <= max_mun: #按照最大的數的位數進行迴圈 10 ** it 當it = 1時 10 ** it 表示次方 10的1次方

buckets = [ for _ in range(10)] #生成10個桶(列表)

for var in li:

digit = (var // 10 ** it) % 10 # 將列表中的數進行分桶 進行數的除法和取餘可以獲得數值的個位數

li.clear() #清空列表

for buc in buckets:

li.extend(buc) # 將數放回到原來列表

it += 1

————————————————————

#!/usr/bin/python

# 計數排序

# 對列表進行排序,已知列表中的值的數都在0-100之間

def count_sort(li,max = 100):

count_list = [0 for _ in range(max+1)] #生成乙個0到100的長度的列表 用來存放原來列表的值

for val in range(li): #迴圈原來列表,將新列表中的相同的數值進行加1

count_list[val] += 1

li.clear() # 清空原來列表 不使用新的記憶體 節省空間

for ind,val in enumerate(count_list): # 迴圈新的列表。取出值和下標

for i in range(val): #迴圈每個數出現的次數

#時間複雜度為 o(n) 但是存在使用條件 , 和列表中的數值範圍相關

計數排序 基數排序

一.計數排序 counting sort 基本思想 對每乙個輸入元素x,確定出小於x的元素個數。適用範圍 適用於輸入是由小範圍的整數構成的序列。穩定性 演算法是穩定的。具體實現 include using namespace std arr 初始輸入陣列,res 存放排序結果的陣列,hash臨時儲存...

python實現計數排序 桶排序 基數排序

本篇 在python3中可用,在python2中需要相應修改一些。計數排序 基數排序 桶排序則屬於非比較排序,演算法時間複雜度o n 優於比較排序。但是也有弊端,會多占用一些空間,相當於是用空間換時間。計數排序的基本思想是 對每乙個輸入的元素a i 確定小於 a i 的元素個數。所以可以直接把 a ...

排序2 桶排序 計數排序 基數排序 python

1.桶排序 桶排序是設計一定數值範圍的桶,將屬於這個範圍的數值放在桶中,然後將元素在每個桶中排序,再按照桶的順序輸出桶中的排序。def tong sort nums start min nums end max nums tong end start len nums tong list for i...