c++ - 开始和结束数组索引算法

标签 c++ arrays algorithm

给定一个未排序的数组,例如 9 4 4 9 2 2,我需要一个高效的算法,让我能够在该数组排序时知道该数组中每个数字的起始位置和结束位置。例如,对于上面的数组,数字 2 的起始索引为 0,结束索引为 1。数字 4 的起始索引为 2,结束索引为 3,数字 9 的起始索引为索引为 4,结束索引为 5(排序时)。任何人都知道如何以有效的方式做到这一点?有没有一种方法可以不先对数组进行排序?

最佳答案

您可以利用只有十个不同元素这一事实。

首先,遍历数组一次,计算零、一、二等。

根据这些计数,您可以轻松计算出排序数组中每个数字的起始和结束位置。

这是 Counting Sort 的变体, 除了我们实际上没有填充排序数组。

关于c++ - 开始和结束数组索引算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15886400/

相关文章:

python - 通过更改键对 Python 字典进行排序,现在当我尝试迭代它时,它会迭代更改后的键

Java程序获取两个日期之间的差异

java - 使用倒数计时器以特定时间间隔发出信号

algorithm - 在elasticsearch haoop中合并文档,使用es-sparksql创建多个键值对

c++ - 对 `vtable for DigitalClock' 的 undefined reference - 对 `DigitalClock::staticMetaObject' 的 undefined reference - Qt

c++ - Visual C++ 对 std::map 的实现

c++ - C++ 中的 Monad 接口(interface)

成员静态函数内的 C++ 静态变量

java - 如何将数组与空格连接起来?

c++ - 什么是处理数千个单词列表的充分方法