给定一个未排序的数组,例如9 4 4 9 2 2,我需要一个有效的算法,这个算法可以让我知道该数组排序时该数组中每个数字的起始位置和结束位置。例如,对于上面的数组,数字2的起始索引为0,结束索引为1.数字4的起始索引为2,结束索引为3,数字9将具有起始值index为4,结束索引为5(排序时)。任何人都知道如何以有效的方式做到这一点?有没有办法在不先排序数组的情况下做到这一点?
答案 0 :(得分:5)
你可以利用只有十个不同元素的事实。
首先,迭代数组一次,计算零,一,二,等等。
从这些计数中,您可以轻松计算出排序数组中每个数字的起始位置和结束位置。
这是Counting Sort的变体,但我们实际上并没有填充已排序的数组。