获取元素的数组顺序图

时间:2016-05-24 04:20:54

标签: arrays algorithm sorting math

例如:

如果输入为{2,8,5,6,10}, 输出将是{1,4,2,3,5}。 由于源数组中最小值为2,因此它的顺序为1.数组中最大值为10,所以它的顺序是输入数组的长度。

首先对输入数组进行排序然后找到每个元素的索引很容易。但我想知道是否有更优化的方式。

订单是从零开始还是从零开始并不重要。

1 个答案:

答案 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)}
  • 对于i1 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 !!!