performance - 数组管理的时间复杂度(算法)

标签 performance algorithm sorting search time

我正在开发一个程序,该程序接收一堆 (y) 整数,然后需要按顺序返回 x 个最大的整数。此代码需要尽可能快,但目前我认为我没有最好的算法。

到目前为止,我的方法/算法是创建一个已经输入的整数排序列表(从高到低),然后在每个项目进入时处理它。对于前 x 个项目,我维护一个排序的整数数组,当每个新项目进来时,我会使用二进制排序找出它应该放在哪里。 (我也在考虑只接受前 x 个项目,然后快速排序它们,但我不知道这是否更快)在第一个 x 个项目被排序后,我然后通过首先查看它们是否有资格进入来考虑其余项目已排序的最高整数列表(通过查看新整数是否大于列表末尾的整数),如果是,则通过二进制搜索将其添加到排序列表并删除末尾的整数列表。

我想知道是否有人对我如何使它更快或者可能是比这更快的全新方法有任何建议。谢谢。

最佳答案

这是一个 partial sort :

最快的实现是快速排序,您只对包含底部/顶部 k 元素的范围进行递归。

在 C++ 中,您可以只使用 std::partial_sort

关于performance - 数组管理的时间复杂度(算法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14449630/

相关文章:

python 不循环优化函数

python - 比较多维列表范围的最快方法

c# - 如何优化这段代码? (也许用 LINQ?)

java - Java 应用程序中的计数排序和使用

c++ - 字符串指针的排序 vector

linux - centos cpu使用率很高,但是找不到进程

c++ - 新的 C++11 emplace 方法是否会使以前的 C++98/03 push_back/insert 方法过时?

javascript - 一行if语句对应的 'else'是什么?

java - 并行冒泡排序性能

matlab - 如何在 MATLAB 中针对一列对二维数组进行排序?