以下以[ 1,3,5,8,2,5,4 ]这组数字来演示。
- 首先,我们找到这组数字中最大的数,也就是 bucketLen = 8,创建一个最大下标为 8 的空数组 bucket 。
- 遍历数据,将数据的出现次数填入bucket中对应的下标位置中。
- 遍历 bucket ,将数据依次取出即可。
def countingSort(arr, maxValue):
bucketLen = maxValue+1
bucket = [0]*bucketLen
sortedIndex =0
arrLen = len(arr)
for i in range(arrLen):
if not bucket[arr[i]]:
bucket[arr[i]]=0
bucket[arr[i]]+=1
for j in range(bucketLen):
while bucket[j]>0:
arr[sortedIndex] = j
sortedIndex+=1
bucket[j]-=1
return arr