桶排序我知道思想,但是一直沒有自己實現過,我今天特地實現了乙個版本,主要思想是分桶,設定每個桶的範圍,然後把數對映到每個桶內,然後每個桶排序後進行合併就行了。
class solution():
def __init__(self):
super().__init__()
def bucketsort(self,nums,bucketsize=5):
maxvalue=max(nums)
minvalue=min(nums)
n=len(nums)
bucketcount = (maxvalue - minvalue) // bucketsize + 1
buckets=[ for i in range(bucketcount)]
for i in range(n):
j=(nums[i]-minvalue)//bucketsize
# print(buckets)
# print(bucketcount)
for i in range(bucketcount):
buckets[i].sort()
res=
for i in range(bucketcount):
res+=buckets[i]
return res
if __name__ == "__main__":
arr=[2,7,3,4,7,12,3,2,1]
solution=solution()
res=solution.bucketsort(arr)
print(res)
omkarpathak python-programs Python實現桶排序
實現範圍為1 m的桶排序 對於陣列a,包含n個整數,值從1到m,我們可以利用一種非常快速的排序,桶排序 bucket sort 建立乙個陣列s,裡面含有m個桶,初始化為0。然後遍歷陣列a,讀入ai時,s ai 增一。所有輸入被讀進後,掃瞄陣列s得出排好序的表。該演算法時間花費o m n 空間上不能原...
排序演算法09 桶排序 Python實現
桶排序,主角當然是桶了 桶就是乙個列表,存放的是乙個範圍內的數,同時還是有序的 桶排序需要的是一組桶,桶之間的範圍連續且相等,比如第乙個桶範圍是10 19,第二個桶的範圍就是20 29 這些桶的範圍正好包括需要排序的數 其中我們能知道的就只有列表中數的範圍 max min 1 加一的目的是防止越界,...
python實現計數排序 桶排序 基數排序
本篇 在python3中可用,在python2中需要相應修改一些。計數排序 基數排序 桶排序則屬於非比較排序,演算法時間複雜度o n 優於比較排序。但是也有弊端,會多占用一些空間,相當於是用空間換時間。計數排序的基本思想是 對每乙個輸入的元素a i 確定小於 a i 的元素個數。所以可以直接把 a ...