#11. Слияние двух упорядоченных списков | Алгоритмы на Python

Поделиться
HTML-код
  • Опубликовано: 2 мар 2021
  • Рассматривается эффективный алгоритм слияния двух упорядоченных списков в третий, так, чтобы результирующий список тоже был упорядоченным. Приведена реализация этого алгоритма на языке Python.
    algorithm-merge-lists.py: github.com/selfedu-rus/python...

Комментарии • 26

  • @user-oq5kj2ku9o
    @user-oq5kj2ku9o 7 месяцев назад +2

    Спасибо большое за то, что показали как можно ещё реализовать данный алгоритм!

  • @user-zw3om5vi8h
    @user-zw3om5vi8h 2 года назад +2

    Спасибо, все подробно разжевываете!

  • @victoriakubler164
    @victoriakubler164 Год назад +1

    спасибо огромное за объяснение. Все доступным языком без усложнений

  • @ruzoompartygmail4273
    @ruzoompartygmail4273 7 месяцев назад +2

    Спасибо огромное. Отличная подача материала!

  • @user-ru5xo5be8y
    @user-ru5xo5be8y Год назад

    Благодарю за подробное объяснение! 👍

  • @yandeenlev
    @yandeenlev 2 года назад +1

    Спасибо за понятное объяснение.

  • @Bah1918
    @Bah1918 3 года назад +4

    Всегда интересно.

  • @friend1cat
    @friend1cat 3 года назад +4

    Спасибо, Сергей!

  • @user-lr6kg3ej6k
    @user-lr6kg3ej6k 5 месяцев назад +1

    Удивительно, но факт. Формирование такого списка намного (на порядок или чуть больше) дольше, чем конкатенация (или расширение) двух списков, а затем их сортировка с помощью метода списков sort() или встроенной функции sorted().
    Причина в механике метода append().
    Для С++ такая сортировка, наверное, годится, но для Python - неоптимальное решение.

  • @oleggreen1244
    @oleggreen1244 2 года назад +2

    Возможно будет ещё быстрее если переносить не по 1 числу, а кусками. Т.е например 2,7,8 и 1,3,4,5,6,9 тут числа 3,4,5,6 можно перенести одной командой. Но нужно искать такие куски.

  • @user-et4if5gs8z
    @user-et4if5gs8z 2 года назад +1

    блин
    я через попу нулевых элементов реализовывал
    хотя через указатели мне кажется более программистским подходом
    спасибо, Сергей, за науку!

    • @user-lr6kg3ej6k
      @user-lr6kg3ej6k 5 месяцев назад

      Через указатели быстрее.

  • @user-tx6nx8pj5x
    @user-tx6nx8pj5x 5 месяцев назад +1

    Если программу запустить 2 раза, то к предыдущему выводу добавится еще один такой же список. И так можно делать до бесконечности. То есть сначала ответом был список: с. Запустили еще раза прогу: на выводе уже две "с". Сколько раз запускаешь прогу столько списков "с" и будет.

    • @mrdisillusion7515
      @mrdisillusion7515 Месяц назад

      ну так напиши функцию, которая работает не с самим списком, а с его копией

  • @EnjoyTheDeluxe
    @EnjoyTheDeluxe 8 месяцев назад +1

    Я не понимаю, а как программа знает о том, что счетчик i принадлежит первому списку, а счетчик j ко второму списку?

  • @chopik612
    @chopik612 3 года назад +1

    Учусь программированию пока по этому каналу для того, чтобы потом брать какие-либо заказы на фрилансе. У меня вопрос, достаточно ли того, что предлагает здесь автор на своём канале, чтобы выполнять какие-либо маленькие заказы? Потому что я не знаю, какие именно нужны практические знания для этого. может быть посоветуете хороший курс? желательно по с++.

    • @selfedu_rus
      @selfedu_rus  3 года назад

      По основам С++ здесь тоже есть курс ruclips.net/p/PLA0M1Bcd0w8zHoZcf7IWTM4aQESDSErUs

    • @chopik612
      @chopik612 3 года назад

      @@selfedu_rus понимаю, сейчас его и прохожу. Но этого же явно недостаточно. Я хотел спросить, на что в С++ стоит сделать упор, что для работы с заказами желательно знать ещё и возможно ли обойтись только С++ или питон всё равно нужен как минимальные требования. Спасибо!

    • @selfedu_rus
      @selfedu_rus  3 года назад +1

      @@chopik612 Одного С++ явно мало, нужно знать библиотеки, как правило, STL + графика + интерфейс. И, конечно же, опыт программирования хотя бы на своих задачках + стандартные алгоритмические подходы + паттерны проектирования.

    • @chopik612
      @chopik612 3 года назад

      @@selfedu_rus спасибо, это уже конкретнее. А вот что понимается под "графикой" и "интерфейс", на канале это есть?

    • @selfedu_rus
      @selfedu_rus  3 года назад +1

      @@chopik612 графика - это OpenGL или DirectX или просто умение рисовать в клиентском окне. Интерфейс - это программы с окнами, менюшками, диалоговыми окнами и т.п.

  • @povny
    @povny 3 года назад

    а если нужно получить массив по возрастанию из двух массивов по убыванию

    • @selfedu_rus
      @selfedu_rus  3 года назад

      запишите элементы в обратном порядке и все

  • @maxulanov3893
    @maxulanov3893 3 года назад

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

    • @selfedu_rus
      @selfedu_rus  3 года назад

      O(N)

    • @carbon2409
      @carbon2409 2 месяца назад

      @@selfedu_rus разве не O(n+m)? К слову, на литкоде есть такая же задача уровня хард, но там требование выполнить ее за O(log n+m). Как это сделать? Бинарным деревом как-то?