桶排序

/ Python / 0 条评论 / 245浏览

def SelectionSort(a): n=len(a) for i in range(0,n): min=i for j in range(i+1,n): if a[j]<a[min]: min=j a[i],a[min]=a[min],a[i] #实现桶排序 def BucketSort(a): minV=min(a) maxV=max(a) bucketCount=3 bucket=[[],[],[]] perBucket=(maxV-minV+bucketCount)//bucketCount

for num in a:
    bucketIndex = (num-minV)//perBucket
    bucket[bucketIndex].append(num)
for i in range(bucketCount):
    SelectionSort(bucket[i])
idx=0
for i in range(bucketCount):
    for v in bucket[i]:
        a[idx]=v
        idx+=1
print(bucket)
print(a)

a=[9,8,25,44,66,712,17,36,17] BucketSort(a) 首先生成一些桶,这些桶中的元素,桶2一定大于桶1,桶3一定大于桶2,依次类推 然后在其他的将数组依次放入桶中进行选择排序。