1.计数排序
https://www.cnblogs.com/bqwzx/p/11029264.html
# 计数排序
def CountSort(self, nums):
maxmum, minmum = max(nums), min(nums)
# max-min+1个桶,初始化为0
a = [0 for _ in range(maxmum - minmum + 1)]
for i in range(len(nums)):
a[nums[i] - minmum] += 1
k = 0
print(a)
for i in range(len(a)):
while a[i] != 0:
nums[k] = i + minmum
k += 1
a[i] -= 1
return nums
2.桶排序
https://blog.csdn.net/qq_27124771/article/details/87651495
# 桶排序
def BucketSort(self, nums):
maxmum, minmum = max(nums), min(nums)
n=len(nums)
bucketArr = [[] for _ in range((maxmum-minmum) // n + 1)]
for i in nums:
index=(i-minmum)//n
bucketArr[index].append(i)
nums.clear()
for i in bucketArr:
num=self.HeapSort(i)
nums.extend(num)
return nums
把数据划分成好几个子问题,然后采用堆排序。