Daisy_iridescent 2023-10-27 15:14 采纳率: 0%
浏览 6

基数排序python在特定输入输出条件下的代码

描述 基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也能用于其他数据类型。 本题要求必须使用基数排序,不要使用其他排序算法如堆排序,归并排序,快速排序等,也不要直接调用库函数,我们会在后台检查提交的代码! 输入 输入的第一行包含1个正整数n,表示共有n个正整数需要参与排序,其中n不超过100000。 第二行包含n个用空格隔开的正整数,表示n个需要排序的整数。 输出 只有1行,包含n个整数,表示从小到大排序完毕的所有整数。 请在每个整数后输出一个空格,并请注意行尾输出换行。请用python实现

  • 写回答

2条回答

  • Lucky_Dog_c 2023-10-27 15:15
    关注
    
    def counting_sort(arr, exp):
        n = len(arr)
        output = [0] * n
        count = [0] * 10
    
        for i in range(n):
            index = arr[i] // exp
            count[index % 10] += 1
    
        for i in range(1, 10):
            count[i] += count[i - 1]
    
        i = n - 1
        while i >= 0:
            index = arr[i] // exp
            output[count[index % 10] - 1] = arr[i]
            count[index % 10] -= 1
            i -= 1
    
        for i in range(n):
            arr[i] = output[i]
    
    def radix_sort(arr):
        max_value = max(arr)
        exp = 1
    
        while max_value // exp > 0:
            counting_sort(arr, exp)
            exp *= 10
    
        return arr
    
    # 读取输入
    n = int(input())
    arr = list(map(int, input().split()))
    
    # 基数排序
    sorted_arr = radix_sort(arr)
    
    # 输出结果
    for num in sorted_arr:
        print(num, end=' ')
    print()
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 10月27日