如何在 1 到 50000 之间对 10000 个数字进行排序

How to sort 10000 numbers between 1 and 50000

本文关键字:10000 数字 排序 之间 50000      更新时间:2023-10-16

我遇到了这个面试问题,面试官问如何在 1 到 50k 之间对 10000 个数字(存在于数组中)进行排序。随后在C++年实施。我所知道的关于排序的只是基本的排序算法,我认为面试官并不在寻找。我该怎么做?

是否有某些特定的算法可以处理这些类型的条件?

更新:很抱歉有点混乱,10000 个数字不是随机的,而是存在于数组中,值可以是 1 到 50k 之间的任何值

注意:我是算法和C++的新手,所以我怀疑你们中的一些人可能会认为这个问题是主观的,因为没有代表我的代码,但我会感谢您的帮助,因为我不知道在这种情况下可能有帮助的算法。

您可以分配 50,000 个字节,将它们初始化为 0。然后使用此数组计算每个值在一次传递中在源数组中出现的次数。然后,可以遍历大小为 50,000 的数组并提取值。

这通常被称为鸽子洞排序。