У меня есть массив целых чисел. Целые числа могут быть положительными или отрицательными, и могут быть дубликаты. Я сортирую массив, от низкого до высокого, используя qsort.вычисление относительного положения в массиве в c
int myArray[] = { -4, -2, 0, 1, 1, 3, 3, 3, 9, 14, 17, 24 };
Затем я хочу найти относительное положение одного из целых чисел (X) в массиве, так что я разделить позицию (Y) целого числа от размера массива (S), и вычитать .5 из результата, так что относительное положение выражается по шкале от -50 до 0,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)?
Убедитесь, что вы выполняете разделение с плавающей точкой, а не целое. ;) – anishsane
Неужели вы пытаетесь его реализовать? –
Каково ваше решение для дубликатов? Например, какой результат вы хотите для массива [1, 1, 1, 1]? – yasen