【发布时间】:2013-09-17 20:28:09
【问题描述】:
假设我有一个包含唯一随机数的数组(其中数字的可能范围很小,为 0 到 20)。例如:
[6, 3, 11, 9, 4, 5]
我怎样才能把下面的数组转换成这样的:
[3, 0, 5, 4, 1, 2]
第二个数组从 0 开始,以 (array.Length-1) 结束,但位置与第一个数组中的大小有关。
如何在 C/C++/C# 中以有效的方式实现这一点? (对方法更感兴趣)
我只举了一个例子。它可以是任何东西:
[7, 10, 0, 19, 50, 33, 45, 100]
[1, 2, 0, 3, 6, 4, 5, 7]
数组 A 中的最小数是数组 B 中的 0。数组 A 中的最大数是数组 B 中的 (array.Length-1)。数组 A 可以是完全随机的(只是它永远不会包含两个或多个相同的数字),但数组 A 必须包含从 0 到 array.Length-1) 的所有数字,顺序与数组 A 中的顺序相同。
【问题讨论】:
-
转换是如何进行的?是
A1 - 3吗?A1 / 2?请先尝试自己解决它。 -
Questions asking for code must demonstrate a minimal understanding of the problem being solved. Include attempted solutions, why they didn't work, and the expected results. -
我只需要想法/方法来实现这一点。我正在尝试在 C# 中实现它,但我确信如果它适用于 C、C++ 或 C#,这并不重要。
-
啊哈!如果已排序,您是否希望输出数组成为输入数字的位置?
-
我不明白针对这个问题的尖酸刻薄。 OP正在要求一种算法,这个问题对我来说似乎很清楚。他表现出“对正在解决的问题的最小理解”。我想他可以添加一些尝试性的解决方案,但我见过更糟糕的问题。
标签: c# c arrays random numbers