使用浮点数组对int数组进行排序

时间:2014-02-07 07:04:35

标签: c# arrays sorting runtime

我正在尝试对浮点数组进行排序,但不知何故跟踪每个浮点数在数组中的原始位置。 我试图通过创建一个int的数组来实现这一点,其中array [i] = i然后根据浮点数组排序这个int数组。

Array.Sort(Array,Array)看起来像是要走的路,所以我这样调用这个方法:

Array.Sort(ints, floats);

但是我遇到了运行时错误:

ArgumentException: Value does not fall within the expected range.
System.Array.Sort[Int32,Single] (System.Int32[] keys, System.Single[] items, Int32 index,        Int32 length, IComparer`1 comparer)

我知道这种方法适用于两个整数数组。

否则,是否有更好的方法对数组进行排序,但是跟踪每个项目的原始位置?

非常感谢!

1 个答案:

答案 0 :(得分:0)

如果您需要基于浮点值在原始数组中浮点的位置,请尝试使用字典!

float[] f = new float[] { 1.4f, 2.4f, 1.9f };
Dictionary<float, int> origPos = new Dictionary<float, int>();
for (int i = 0; i < f.Length; i++)
{
    origPos[f[i]] = i;
}
Array.Sort(f);

int pos = origPos[f[1]];  // this way you can get the position of a float in the original array