我正在尝试对浮点数组进行排序,但不知何故跟踪每个浮点数在数组中的原始位置。 我试图通过创建一个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)
我知道这种方法适用于两个整数数组。
否则,是否有更好的方法对数组进行排序,但是跟踪每个项目的原始位置?
非常感谢!
答案 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