如何订购具有重复值的数组?

科迪

我想订购一堆可能有重复的东西。例如:

int values[5] = {4, 5, 2, 5, -1};
int expected[5] = {1, 2, 0, 2, -1};

这里2是最小的元素,因此其顺序为0。4是第二个最小的元素,因此其顺序为1。5是最小的第三元素,我希望它们两个都具有2的顺序。我想跳过某些元素(-1表示上面的示例),因此这些元素的阶数为-1。

如何在C ++中做到这一点或描述算法?

谢谢

尼古拉斯·B。

只需对数组进行排序,然后为每个元素分配其等级:

vector<int> v(values, values + 5);
v.push_back(-1);
sort(begin(v), end(v));
v.resize(unique(begin(v), end(v)) - begin(v));
for (int i = 0; i < 5; ++i)
  expected[i] = lower_bound(begin(v), end(v), values[i]) - begin(v) - 1;

假定所有元素均为非负数或-1。如果负元素小于-1,则需要对-1进行特殊处理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何基于重复值订购php数组

如何删除具有重复列值的子数组?

如何从具有重复值的数组中嵌套对象

具有重复值的数组数组

php - 比较具有重复值的数组

具有重复值的扁平数组

从具有重复值的数组创建对象

如何检查对象数组是否具有具有更多属性的重复属性值?

如何复制具有重复值的 HashMap

如何遍历具有重复值的列表?

如何检查对象数组是否具有重复的属性值并获取重复的最后一个值?

如何使用JavaScript添加具有不同元素的数组并添加重复元素值

如何检查对象数组是否具有重复的属性值?

在 JavaScript 中,如何检查数组是否具有重复的多个值?

如何在具有重复值的数组中使用索引匹配函数

如何使用Array.prototype.sort()对具有重复值的数组进行排序?

如何根据 PHP 中的键清理具有半重复值的数组?

在PHP中,如何删除对象数组中的重复项,其中重复项定义为具有相同值的键值对的子集

在PHP中合并具有重复值的多维数组

使用lodash检查数组是否具有重复值

在数组中组合具有重复值的对象

具有重复值的Java排序数组

提取具有JS数组出现次数的重复值

合并具有某些重复值的2个多维数组

MongoDB查询以查找数组中具有重复值的文档

合并具有重复值的数组索引的特定字段

具有重复值的多维数组返回键

具有重复值的数组组合函数(保留键)

对具有重复值的数组进行线性搜索