搜索引擎算法的最坏情况复杂度

计算科学 算法 复杂 特殊功能
2021-12-04 18:15:56

计算机使在大型数据库中查找信息成为可能。但是,结果通常太大而无法完整地返回给请求它们的用户。因此,计算机会根据自己的指标按相关性对结果进行排序。它们只显示页面上的前 k 个结果。然后用户可以转到下一页查看下一个k结果甚至直接去p-th page 查看该页面的 k 个结果。

我想要这样的算法Θ(n+klogk)

1个回答

您可以进行“部分”快速排序以获取未排序列表中的第 n 个元素。例如,算法std::nth_element存在于 C++ STL 中。

例如,如果您有 1000 个元素并且您想对 500 到 510 的范围进行排序,那么您可以这样做:

nth_element(0, 500, 1000);
nth_element(500, 510, 1000);
quicksort(500, 510);

您可以在此处找到有关该算法的更多详细信息:
https ://en.wikipedia.org/wiki/Selection_algorithm