Задать вопрос
@KarakulovWebDev

Какая временная сложность у этого алгоритма?

есть алгоритм для поиска медианты в двух отсортированных массивов

сформулирована она след образом:


Заданы два отсортированных массива и размера и, соответственно, вернется медиана двух отсортированных массивов.nums1nums2mn

Общая сложность времени выполнения должна быть .O(log (m+n))


есть решение на JavaScript
var findMedianSortedArrays = function(nums1, nums2) {
    const sumLength = nums1.length + nums2.length
    const isEven = (sumLength % 2) === 0
    const startMedianIndex = isEven ? (sumLength / 2) -1 : Math.ceil(sumLength / 2) - 1

    for (let i = 0, i1 = 0, i2 = 0; i < sumLength; i++) {
        const n1 = nums1[i1]
        const n2 = nums2[i2]
        let current = 0

        if (n1 <= n2 || typeof n2 !== 'number') {
            i1++
            current = n1
        } else {
            i2++
            current = n2
        }
        if (i === startMedianIndex) {
            if (isEven) {
                let next = 0
                if (typeof nums1[i1] === 'number' && typeof nums2[i2] === 'number') {
                    next = Math.min(nums1[i1], nums2[i2]) 
                } else {
                    next = typeof nums1[i1] === 'number' ? nums1[i1] : nums2[i2] 
                }
                return (current + next) / 2
            } else {
                return current
            }
        }
    }
};


какая сложность у этого алгоритма и почему?
  • Вопрос задан
  • 297 просмотров
Подписаться 2 Простой 1 комментарий
Решения вопроса 1
miraage
@miraage
Старый прогер
Не силен в этой теме, но вот какие мысли.

Есть два списка размером M и N.
Есть 1 цикл до M+N.
Внутри цикла нет вложенных циклов.

O(M+N)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
dimovich85
@dimovich85 Куратор тега JavaScript
https://u-academy.net/
wataru
@wataru Куратор тега Алгоритмы
Разработчик на С++, экс-олимпиадник.
Линейная. O(N+M). Ибо там цикл по i от 0 до startMedianIndex и вся остальная мишура на i вообще никак не влияет. Больше циклов в программе нет. Не понимаю, что тут может быть непонятного.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы