This question already has answers here:

Write a program to find 100 largest numbers out of an array of 1 billion numbers
(33个答案)
给定一个整数数组,哪种算法将返回五个最小数的和?我想在不依赖排序算法的情况下,只通过一次。
考虑到我们不能仅仅对输入数组进行排序并得到五个最小的数字,我计划在开始时存储前五个数字,然后比较其余的输入并继续存储五个最小的数字。但是,如果没有排序算法,我该如何挑选第一个最小的五个呢?

最佳答案

您可以使用selection algorithm,其中k是5你可以把列表从开始返回到k,然后把所有的数字相加。如果你做中间值的话,它是O(n)。
此算法依赖于某些排序所依赖的相同分区例程(如quicksort)。但是,它不会对元素进行排序。

07-24 09:18