【问题标题】:storing original index in an array将原始索引存储在数组中
【发布时间】:2013-01-29 21:36:09
【问题描述】:

我正在尝试执行合并排序而不实际重新排列数组。让我解释得更好一点。假设我有一个数组:

3
5
6
7
0
4
1
2

例如,如果 5(当前位于索引 1)移动到索引 6,我需要我的程序记住最初存储 5 的位置的索引。我怎样才能记住原来的索引?

【问题讨论】:

  • 您有什么想问的吗?
  • 在这种情况下,您可以获取数组的副本并对其进行排序:)。

标签: c arrays merge


【解决方案1】:

您可以做的是为每个元素使用一个结构,并为这些结构对象创建一个数组。例如-

typedef struct
{
  int val;
  int index;
}element;

循环遍历数组,val字段填入值,另一个填入原始位置。

排序时,您在 val 字段上进行比较,并保持 index 不变。所以现在有了原来的位置,数组也可以排序了。

【讨论】:

    【解决方案2】:

    创建一个指向原始数组的并行指针数组。对指针进行排序,而不是对原件进行排序。您的索引位置保持不变,您现在有了一个排序后的数组“视图”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-22
      • 2014-03-08
      相关资源
      最近更新 更多