给定一个未排序的数组,例如 9 4 4 9 2 2,我需要一个有效的算法,当该数组被排序时,它可以让我知道该数组中每个数字的起始位置和结束位置。例如,对于上面的数组,数字 2 的起始索引为 0,结束索引为 1。数字 4 的起始索引为 2,结束索引为 3,数字 9 的起始索引为索引为 4,结束索引为 5(排序时)。任何人都知道如何以有效的方式做到这一点?有没有办法在不先对数组进行排序的情况下做到这一点?
问问题
131 次
1 回答
5
您可以利用只有十个不同元素的事实。
首先,遍历数组一次,计算零、一、二等。
从这些计数中,您可以轻松计算出排序数组中每个数字的开始和结束位置。
这是Counting Sort的变体,除了我们实际上不填充排序数组。
于 2013-04-08T18:38:16.377 回答