0
点赞
收藏
分享

微信扫一扫

3个让你爽到爆炸的学习工具

cnlinkchina 2024-07-24 阅读 7

华为机试HJ58输入n个整数,输出其中最小的k个

题目:

输出输入中最小的k个元素

想法:

通过快速排序对输入的元素进行从小到大的排序,输出前k个最小的元素

input_number = input().split(" ")

number_list = input().split(" ")

number_list = [int(n) for n in number_list]

def partition(arr, low, high):
    i = low - 1
    pivot = arr[high]
    for j in range(low, high):
        if arr[j] <= pivot:
            i += 1
            arr[i], arr[j] = arr[j], arr[i]
    arr[i+1], arr[high] = arr[high], arr[i+1]
    return i + 1


def quick_sort(arr, low, high):
    if low < high:
        pi = partition(arr, low, high)
        quick_sort(arr, low, pi-1)
        quick_sort(arr, pi+1, high)
    return arr
result = quick_sort(number_list, 0, len(number_list)-1)[:int(input_number[1])]
result = [str(r) for r in result]
print(" ".join(result))
举报

相关推荐

0 条评论