придумал только переложить их в массив и отсортировать опять, но это не оптимально.
Это мне на собесе дали решить, собес я благополучно прое*бал(
В принципе глянув первую цифру и последнюю в строке можно узнать какой промежуток чисел находится в строке, далее можно в зависимости от промежутка вставить в итоговый массив, получим частично отсортированный массив, далее проходимся пузырьком пока массив не станет отсортированным.
На метод двух указателей похоже🤔🤔🤔
Можно так как известно числа в каком промежутке находятся в каждой строке, можно начать добавлять ту строку в которой меньший промежутов пока не дойдём до коллизии с другим промеджутком, далее в зависимости от того в каком промежутке меньше чисто то и ставим. 0) 1 3 10 100 1) -1 0 3 6 2) 10 20 30 40 Промежутки 0) 1 100 1) -1 6 2) 10 40 у первой начало меньше добавлять начинаем его в итоговый массив -1 итоговый массив -1 0 итоговый массив -1 0 3 > 1 итоговый массив -1 0 1 3 == 3 итоговый массив -1 0 1 3 3 6 < 10 итоговый массив -1 0 1 3 3 6 10 == 10 итоговый массив -1 0 1 3 3 6 10 10 20 < 100 итоговый массив -1 0 1 3 3 6 10 10 20 30 < 100 итоговый массив -1 0 1 3 3 6 10 10 20 30 40 < 100 итоговый массив -1 0 1 3 3 6 10 10 20 30 40 100 итоговый массив -1 0 1 3 3 6 10 10 20 30 40 100
Увеличиваем матрицу и алгоритм идет нахуй
Числа могут быть другие и тд заебешься искать и сравнивать Да и массив например будет 1000 на 1000
Перед каждой вставкой будет 1000 сравнений, в худшем раскладе их будет 1000*1000
Если в алгоритме игнорировать промежутки то будет сложность O(n*n*m)
Обсуждают сегодня