【发布时间】:2016-08-11 08:59:21
【问题描述】:
我有一个包含 3 个浮点值的数组:
float norms[3];
norms[0] = 0.4;
norms[1] = 3.2;
norms[2] = 1.7;
我想按降序对这个数组进行排序同时跟踪数组中值的原始索引。
换句话说,给定数组norms[] = {0.4, 3.2, 1.7}和对应的索引{0, 1, 2},我基本上想获得一个对应ints的数组,它反映norms[]中float值在降序后的原始位置种类。在这种情况下,它将是{1, 2, 0}。
实现这一目标的最佳/最干净的方法是什么?
【问题讨论】:
-
创建一个包含索引的大小相同的 int 类型数组。对浮点数组进行排序时,只需镜像 int 数组上的任何交换操作。
-
使用带有索引字段的结构体,在排序前写下每个元素的索引,这样会保留数组中的原始位置。
-
@Lundin 无法实现问题的要求
-
@Lundin 究竟会实现什么?您的“解决方案”在哪里创建原始发布者想要的索引?您最终会得到一个已排序和未排序的数组,但您没有两者之间的索引,如果没有“思维混乱、未成熟的优化算法”,就无法获得它。
-
@DimitarSlavchev 我会让删除了您所指的任何 4 年前评论的版主来回答这个问题。