例如:
如果输入为{2,8,5,6,10}, 输出将是{1,4,2,3,5}。 由于源数组中最小值为2,因此它的顺序为1.数组中最大值为10,所以它的顺序是输入数组的长度。
首先对输入数组进行排序然后找到每个元素的索引很容易。但我想知道是否有更优化的方式。
订单是从零开始还是从零开始并不重要。
答案 0 :(得分:1)
{2,8,5,6,10}
变为{(2,1),(8,2),(5,3),(6,4),(10,5)}
。让这个数组为A
。A
。您现在有{(2,1),(5,3),(6,4),(8,2),(10,5)}
对于i
到1
length(A)
的每个B[A[i].second_element] <- i
,
B[1] <- 1
B[3] <- 2
B[4] <- 3
B[2] <- 4
B[5] <- 5
。在你的情况下:
B={1,4,2,3,5}
现在Handler
。 PROFIT !!!