Предмет:
ИнформатикаАвтор:
mcguireОтвет:
Объяснение:
Для данного массива можно использовать алгоритм слияния k массивов, где k = n.
Алгоритм будет состоять из следующих шагов:
Создать новый массив b[1..n*m].
Создать массив указателей на первый элемент в каждом массиве [p1, p2, ..., pn] и инициализировать его значением 1 для всех элементов.
Для каждого i от 1 до n*m:
Найти минимальный элемент в массивах a[p1][1] до a[pn][m] и записать его в b[i].
Увеличить соответствующий указатель на 1: если b[i] был найден в a[pj][k], то увеличить pj на 1.
Вернуть массив b.
Алгоритм работает за O(nmlog(n)), так как на каждой итерации нужно находить минимальный элемент среди nm чисел, и это можно сделать за O(nlog(n)). Всего итераций nm, поэтому общая сложность алгоритма будет O(nm*log(n)).
Автор:
trappertuapДобавить свой ответ
Предмет:
ФизикаАвтор:
baby cakesОтветов:
Смотреть
Предмет:
АлгебраАвтор:
javierwarrenОтветов:
Смотреть