Бинарный (двоичный) поиск в языке C#

Sdílet
Vložit
  • čas přidán 8. 06. 2021
  • Поддержать канал
    www.donationalerts.com/r/basi...
    В этом видео вы узнаете, что такое бинарный поиск, в чем его преимущества и как его использовать в языке программирования C#
    Приятного просмотра!
    Игры, созданные мной
    store.steampowered.com/search...
    Мой инстаграм
    / basicsloth.games
    Music from filmmusic.io
    by Kevin MacLeod (incompetech.com)
    License: CC BY (creativecommons.org/licenses/...)
    #сишарп #бинарныйпоиск #двоичныйпоиск #программирование

Komentáře • 51

  • @annakhan4893
    @annakhan4893 Před 2 lety +5

    ваау. Вот это объяснение! Даже не представить не могла, что так просто можно объяснить! Лайк и подписка!

  • @maevdanil3523
    @maevdanil3523 Před rokem +1

    Спасибо большое за видео! Очень сильно помогли!

  • @viktoriaerovchenko1680
    @viktoriaerovchenko1680 Před 2 lety +3

    Большое спасибо! Всё очень понятно

    • @basicsloth
      @basicsloth  Před 2 lety +1

      Спасибо за комментарий))

  • @averagehuman5472
    @averagehuman5472 Před 2 lety +2

    Славное объяснение. Спасибо.

  • @user-iq5wx7qq4v
    @user-iq5wx7qq4v Před rokem +1

    Елена, спасибо! Как оказалось, не так всё сложно )

  • @isaabk4409
    @isaabk4409 Před 3 dny

    Спасибо!

  • @user-iq4br4vw2q
    @user-iq4br4vw2q Před rokem

    Моё почтение. Вы лучшие!

  • @XeS1aN
    @XeS1aN Před 2 lety +1

    Однозначно лайк

  • @mazaltovman
    @mazaltovman Před rokem +1

    Хлопаю стоя!

  • @anastasiya5971
    @anastasiya5971 Před 2 lety +3

    Всё очень просто и понятно. Спасибо!

  • @orhanaliyev9774
    @orhanaliyev9774 Před 2 lety +2

    Я бы добавил проверку на попадание искомого числа в минимум и максимум,тогда число проверок сократится еще в 2 раза

    • @basicsloth
      @basicsloth  Před 2 lety +2

      Ну кстати да, хороший вариант, спасибо за дополнение)

  • @anttton_4823
    @anttton_4823 Před rokem +2

    2:20 в таком случае, начиная с массива из 129 элементов, у нас должно быть 8 итераций в поиске. Но почему 8 итераций начинаются только с 191 элемента?

    • @basicsloth
      @basicsloth  Před rokem

      Сейчас могу ошибаться, но, по-моему, где-то читала, что во всяких подобных алгоритмах вообще не важно точное количество итераций, особенно на малых количествах данных. То есть если алгоритм выполняется не за N итераций, где N - кол-во элементов, а за N-5, на массиве из 1млн. элементов разница будет не видна, поэтому говорят, что скорость алгоритма N. Всем понятно, что скорость N ниже, чем N/2, а эта ниже чем логарифм как в видео. Скорее нужно говорить стремится или не превышает, но так никто не делает, потому что скорость больше важна в сравнении и в больших масштабах

  • @AleksPanable
    @AleksPanable Před rokem

    подписался из-за приятного женского голоса в мире программирования

  • @_MaiT
    @_MaiT Před rokem

    а почему мы отбрасываем только конечный член массива когда можем по половине убирать. Быстрее получится, или я не прав?

    • @basicsloth
      @basicsloth  Před rokem +1

      Все так, мы и убираем по половине массива. В каждой итерации мы берем массив, находим середину, сверяемся с искомым числом, а если не совпадает, сдвигаем граница массива (верхнюю или нижнюю, в зависимости от того больше или меньше наше число). Сдвинув прям на это число, на середину массива (переменная guess) мы уже сократим массив в два раза. Вас, вероятно, запутали строки guess - 1 и guess + 1. Это мы не на один элемент весь массив уменьшаем, это мы середину сдвигаем, потому что мы ее уже проверили, и ищем мы не ее, повторно ее обходить не нужно. Надеюсь, понятно объяснила, если нет, пересмотрите первую половину видео, где еще до кода объясняю

  • @maxdenisenko3720
    @maxdenisenko3720 Před 2 lety +1

    почему верхний предел массива (переменная high ) это длинна массива -1 а не просто длинна массива?

    • @basicsloth
      @basicsloth  Před 2 lety

      Потому что нумерация массива начинается с 0. То есть, если массив будет из одного элемента, то у последнего (и единственного) индекс будет 0. Если из 2, индекс последнего элемента 1. Из 3-ех - индекс 2 и т.д. То есть индекс последнего элемента всегда на 1 меньше длины

    • @maxdenisenko3720
      @maxdenisenko3720 Před 2 lety

      @@basicsloth а почему тогда при переборке циклом типа for мы указываем в цикле длину массива а не длину -1 ?

    • @basicsloth
      @basicsloth  Před 2 lety

      @@maxdenisenko3720 потому что там строго меньше длины массива, было бы меньше или равно было бы минус 1. А так фактически так и выходит, что до длины, до неё не доходит

    • @maxdenisenko3720
      @maxdenisenko3720 Před 2 lety +1

      @@basicsloth понял спасибо ))))

  • @dark.babayka
    @dark.babayka Před rokem

    а как сделать то же самое, только масив будет рандомный (от 0 до 50, но числа разные и отсортированые по возростанию)

    • @basicsloth
      @basicsloth  Před rokem

      Если правильно поняла вопрос, то точно так же, в этом способе нет привязки к определенному количеству элементов, длина массива получается с помощью метода Length

    • @dark.babayka
      @dark.babayka Před rokem

      @@basicsloth да , я знаю этот метод. У меня консоль сначала зависала, а сейчас бесконечно требует ввода числа в консоль(сделал код по видео, но числа разные, как я уже и говорил).

    • @basicsloth
      @basicsloth  Před rokem +1

      @@dark.babayka так сложно сказать, в чем может быть проблема. Может, где-то скобку потеряли или что-то вроде того. Я бы посоветовала переписать так как в видео, убедиться, что все работает, а потом по одному элементу менять

    • @dark.babayka
      @dark.babayka Před rokem

      @@basicsloth переписал код из видео в отдельном проекте, проверил на ошибки, их не оказалось. консоль по прежнему зависает, и ничего не выдает

    • @basicsloth
      @basicsloth  Před rokem

      @@dark.babayka тогда могу посоветовать попытаться отловить момент, где что то работает не так. Попробуйте писать по частям код, выводить в консоль результаты каждого куска по отдельности, и так найти ошибку. Либо попробуйте вместо ввода в консоль задать число в коде, так получится отловить, где именно проблема в обработке значения из консоли или в остальном коде

  • @zergzerg4844
    @zergzerg4844 Před 2 lety +1

    Если с цифрами ясно, а как с именами то быть , здесь простое сравнение строк на больше меньше не подойдет

    • @basicsloth
      @basicsloth  Před 2 lety +1

      Можно посимвольно сравнивать строки, работая с ними как с массивами. Например , есть 2 строки a и b, если a[0]

  • @RE31NKA_
    @RE31NKA_ Před 9 měsíci

    Я чуть незахлебнулся от воды в видео, честно, на 1.5 скорости смотрел, все равно воды много

  • @yur4k69
    @yur4k69 Před 11 měsíci

    А что выводит guess?

    • @basicsloth
      @basicsloth  Před 11 měsíci +1

      Это индекс элемента массива, находящийся в середине. То есть индекс того числа, в которое в данный момент "тычет" наш поиск

    • @yur4k69
      @yur4k69 Před 11 měsíci

      А как посмотреть сколько шагов делает бинарный поиск?@@basicsloth

    • @basicsloth
      @basicsloth  Před 11 měsíci +1

      @@yur4k69 создать доп переменную типа инт и увеличивать ее при каждом выполнении цикла

  • @goldgold594
    @goldgold594 Před rokem

    Ошибки в коде, не нужные проверки. Используй правило KISS.
    У тебя в первом же условии программа работает не верно.

    • @basicsloth
      @basicsloth  Před rokem +1

      В чем не верно?

    • @JohnDoe-bq9nf
      @JohnDoe-bq9nf Před 7 dny

      Эти ненужные проверки в быту называются валидацией.

  • @Ya_kruutoy
    @Ya_kruutoy Před rokem

    4:58 в строке int high идет обращение к последнему элементу массива, почему автор несет такую чепуху(уменьшенная на 1 длина массива) то есть это полное непонимание кода, зачем записывать обучающее видео если у автора нет понимания работы программы?

    • @basicsloth
      @basicsloth  Před rokem +3

      Ну а как рассчитывается последний элемент массива, если не как длина массива минус 1? Зачем кто-то пишет комментарии, если нет понимания того, о чем говорят?

  • @JohnDoe-bq9nf
    @JohnDoe-bq9nf Před 7 dny

    guess = findThis - 10; \\ KISS