我有一个整数数组。整数可以是正数也可以是负数,可以有重复数。 我使用qsort对数组进行排序,从低到高。
int myArray[] = { -4, -2, 0, 1, 1, 3, 3, 3, 9, 14, 17, 24 };
然后我想找到一个整数(X)在数组中的相对位置,所以我将整数的位置(Y)除以数组的大小(S),并从中减去.5结果,以便相对位置以-.50到.50的比例表示。
double position = Y/S - .50;
我希望数组中的最小值(在本例中为-4)为-.50,最高值(在本例中为24)为.50?这适用于数组中的最低值,但不是最高值:
double lowPosition = 0/12 - .50; // lowPosition = -.50 double
highPosition = 11/12 - .50; // highPosition = .42
两个问题:
计算这个的正确方法是什么,所以最终得到的低值等于-.5而高值= .5?
如果有重复项,如何准确计算值的相对位置?我应该消除重复项,然后使用相同的计算(位置/大小 - .5)吗?
答案 0 :(得分:1)
1)计算这个的正确方法是什么,所以最终得到的低值等于-.5而高值= .5?
由于数组中的最高位置为S - 1
(其中S
是数组的大小),因此您必须除以S - 1
而不是S
}。
确保对大小为1
的数组设置特殊情况,或者按0
进行除法。
2)当有重复时,如何准确计算值的相对位置?我应该消除重复项,然后使用相同的计算(位置/大小 - .5)?
这取决于你想要得到的相对位置。但删除重复听起来像是一种合理的方法。