Создание порядкового номера - PullRequest
0 голосов
/ 17 июня 2020

У меня есть просьба создать номера последовательно для списка задач, отправленных в файле.

  1. Порядковые номера должны быть назначены в порядке расположения задач
  2. Задачи будут приходить в мое приложение с разной периодичностью. Новые задачи можно вставлять в начало, конец или между существующими задачами.
  3. Если задаче уже был назначен номер, его не следует изменять при добавлении новой задачи.
  4. Порядковые номера могут быть целыми или десятичными с точностью до 1. enter image description here

Есть ли алгоритм, решающий эту проблему?

1 Ответ

2 голосов
/ 17 июня 2020

Если у вас нет какой-либо гарантии того, насколько вам может повезти (сколько раз вам придется вставлять задачу в ваш наименьший промежуток идентификатора сеанса), вы не можете добиться большего, чем каждый раз усреднять соседей. С достаточно большими числами и ограничением в 50 задач это совместимо с целыми числами.

Make fictional T endpoints with session IDs of 0 and 2^50 (# of tasks)
Each task gets the average of its neighbors' session ids.
T1 => S 2^49
T2 => S (0+2^49)/2 = 2^48 or (2^49+2^50)/2 = 2^49 + 2^48
etc...

Все пробелы в идентификаторах сеанса - это степени двойки, и мы начинаем с достаточно большого диапазона, чтобы мы могли уменьшить его вдвое в 50 раз если нужно.

2 ^ 49 = 562,949,953,421,312; idk, насколько это лучше, чем использование float

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...