#!/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...