给定一个数组 arr = {5, 16, 4, 7}
,我们可以通过 sort(arr, arr+sizeof(arr)/sizeof(arr[0]))
对其进行排序。所以现在数组 arr = {4, 5, 7, 16}
排序数组的排列索引是 {2, 0, 3, 1}
。换句话说,原始数组中的 arr[2]
现在是排序数组中位置 0
的最小元素。
有没有一种有效的方法可以让我们获得排列索引?
原文由 q0987 发布,翻译遵循 CC BY-SA 4.0 许可协议
给定一个数组 arr = {5, 16, 4, 7}
,我们可以通过 sort(arr, arr+sizeof(arr)/sizeof(arr[0]))
对其进行排序。所以现在数组 arr = {4, 5, 7, 16}
排序数组的排列索引是 {2, 0, 3, 1}
。换句话说,原始数组中的 arr[2]
现在是排序数组中位置 0
的最小元素。
有没有一种有效的方法可以让我们获得排列索引?
原文由 q0987 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.5k 阅读
3 回答503 阅读✓ 已解决
创建一个索引数组,用数字 0..N-1 填充它,并使用自定义比较器对其进行排序。比较器应比较原始数组中索引
lhs
和rhs
处的项目。以这种方式对索引数组进行排序会将它们重新排序为排列:这打印
2, 0, 3, 1
这是 关于 ideone 的演示。
注意:您可以使用
index
按排序顺序检索data
: