Для объединения в набор, если вы увидите, какой из M-наборов имеет наименьшее значение, которое будет принимать сравнения M-1. и повторите попытку. Если N - это общее число элементов во всех наборах, наш алгоритм таким образом равен O (NM) (игнорируйте, что это M-1 для обозначения Big-O).
Где мы можем оптимизировать следующим образом: если мы отсортируем наименьших элементов t каждого набора: теперь мы выходим с фронта, но из этого набора нам просто нужна вставка O (logM) в наши новые отсортированные фронты. Мы делаем это для каждого элемента, поэтому наш алгоритм O (N logM).
Обратите внимание, что если у вас есть 3, вы, вероятно, ничего не получите. Если у вас есть 8 таких наборов, это, безусловно, может показать выигрыш.
Для пересечения множеств мы ищем только значения, которые появляются во всех наших множествах. Мы знаем, что они одинаковы, если минимум совпадает с максимальным. Мы можем выскочить и отбросить меньшие значения, если они не будут потом снова вставляться каждый раз, когда следующий. Если это так, мы добавляем к нашему результату, затем поп из каждого списка. В любом случае у нас все еще будет O (N logM)