【发布时间】:2014-08-26 12:19:13
【问题描述】:
我有一个数组,比如说A[5],5 个元素是5,4,1,2,3。现在我按升序对这些数组进行排序。所以结果数组现在将是1,2,3,4,5。我使用stdlib.h 的qsort() 函数对其进行排序。问题是如何获得原始数组相对于我的新数组的索引。最初我的索引是0,1,2,3,4 对应的5,4,1,2,3 值,现在索引已更改为2、3、4、1、0。如何在 C 中有效地获取这些索引?提前谢谢(如果可能请写代码)
【问题讨论】:
-
不是对数组本身进行排序,而是创建一个索引数组并对 that 进行排序,并使用比较器函数来比较索引值。
-
你能举个例子吗?这对我来说并不完全清楚
-
好吧,你想让
comp(i, j)返回a[i] < a[j](而不是i < j)等等 -
你能帮我解决这个问题吗?我将用一个例子来澄清。 5,4,1,2,3 是我未排序的数组。现在我得到了一个索引。让我们取第三个索引,第三个索引的值是 2。现在我必须在数组排序后找到值 2 的索引。我该怎么做?