跳转至

基数排序#
发布于2020-11-26
上次编辑2021-02-25

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
def radix_sort(nums: List[int]) -> None:
    """基数排序"""

    max_val = max(nums)
    key = 1
    while max_val // key:

        # 计数排序
        count = [0] * 10
        for x in nums:
            count[(x // key) % 10] += 1
        for i in range(1, len(count)):
            count[i] += count[i - 1]
        nums_sorted = [0] * len(nums)
        # 从后往前遍历是为了保持排序的稳定性
        for x in nums[::-1]:
            count[(x // key) % 10] -= 1
            nums_sorted[count[(x // key) % 10]] = x

        nums[::] = nums_sorted.copy()

        key *= 10
返回顶部

在手机上阅读