python 實現桶排序

2021-10-13 10:10:18 字數 855 閱讀 7361

桶排序我知道思想,但是一直沒有自己實現過,我今天特地實現了乙個版本,主要思想是分桶,設定每個桶的範圍,然後把數對映到每個桶內,然後每個桶排序後進行合併就行了。

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