Изменения

Перейти к: навигация, поиск

Поиск k-ой порядковой статистики в двух массивах

2 байта добавлено, 20:24, 18 апреля 2015
м
Совсем не наивное решение
Приведём теперь решение, работающие за время <tex>O(\log(\min(n, m)))</tex>.
Для начала рассмотрим следующую ситуацию: пусть у нас есть элемент <tex>a[i]</tex> из массива <tex>A</tex> и элемент <tex>b[j]</tex> из массива <tex>B</tex> и они связаны неравенством <tex>b[j - 1] < a[i] < b[j]</tex>. Тогда <tex>a[i]</tex> есть <tex>(j + i + 1)</tex>-ый порядковый элемент после слияния массивов. Это объясняется тем, что до <tex>a[i]</tex>-ого элемента идут <tex>(j - 1)</tex> элемент элементов из массива <tex>B</tex>, <tex>(i+1)</tex> элементов из массива <tex>A</tex> (включая сам элемент <tex>a[i]</tex>). В итоге получаем <tex>j + i + 1</tex>. Принимая это во внимание, будем выбирать <tex>i</tex> и <tex>j</tex> таким образом, чтобы <tex>j + i + 1 = k</tex>.
Подведем промежуточный итог:

Навигация