Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在超大数组中优化找到5个最大元素_C#_Arrays_Algorithm_Data Structures - Fatal编程技术网

C# 如何在超大数组中优化找到5个最大元素

C# 如何在超大数组中优化找到5个最大元素,c#,arrays,algorithm,data-structures,C#,Arrays,Algorithm,Data Structures,我有一个非常大的数组。我必须找到数组中最大的5个元素。实现这一点的最佳/最优算法是什么 请注意,我不必进行排序,它是一个未排序的数组如果数组未排序,最有效的算法是遍历列表,并将最大的5个元素存储在排序列表中。当迭代中的当前元素大于最小元素(SortedList中的第一个元素)时,删除最小元素并将当前元素添加到列表中。如果数组未排序,它的复杂性将是O(n)最有效的算法是遍历列表并将最大的5个元素存储在排序列表中。当迭代中的当前元素大于最小元素(SortedList中的第一个元素)时,删除最小元素并

我有一个非常大的数组。我必须找到数组中最大的5个元素。实现这一点的最佳/最优算法是什么


请注意,我不必进行排序,它是一个未排序的数组

如果数组未排序,最有效的算法是遍历列表,并将最大的5个元素存储在
排序列表
中。当迭代中的当前元素大于最小元素(SortedList中的第一个元素)时,删除最小元素并将当前元素添加到列表中。如果数组未排序,它的复杂性将是
O(n)

最有效的算法是遍历列表并将最大的5个元素存储在
排序列表中。当迭代中的当前元素大于最小元素(SortedList中的第一个元素)时,删除最小元素并将当前元素添加到列表中。它的复杂性将是
O(n)

使用一个大小为5的堆,如果元素大于最小的元素,则将其放在该堆上(并将其移除)。查看选择算法:@JonH选择算法是
O(n)
,但具有复杂的代码和可怕的常数。如果您在一个未排序的
n
数组中查找
m
元素,并且
n
m
大得多,那么Nico建议的堆解决方案在实践中会快得多。使用大小为5的堆,如果元素比最小的元素大,则将它们放在该堆上(并删除该堆).查看选择算法:@JonH选择算法是
O(n)
,但代码复杂,常数可怕。如果您在
n
事物的未排序数组中查找
m
元素,并且
n
m
大得多,那么Nico建议的堆解决方案在实践中会快得多。它的复杂性将是多少?O(n)复杂度当你在长度NIT数组中只经过一次时,复杂度将是
O(n)
再次阅读选择算法它的大O(n)复杂度将是多少?O(n)复杂度当你在长度NIT数组中只经过一次时,复杂度将是
O(n)
再次阅读有关选择算法的内容,它的大O(n)