Сортировка массива вставками на Си

Поделиться
HTML-код
  • Опубликовано: 12 авг 2018
  • Сортировка массива: постановка задачи.
    Сортировка вставками.
    Курс молодого бойца по информатике (Язык Си).
    cs.mipt.ru/c_intro

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

  • @maxrus6173
    @maxrus6173 5 лет назад +59

    Лучшее объяснение алгоритма вставки на всем русскоязычном youtube!

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

    Браво, Маэстро! По Вашему уроку объяснил сортировку по методу вставки! Все поняли и всё понятно! СПАСИБО от Солдатов!

    • @epheymind8475
      @epheymind8475 2 года назад

      Не могли бы объяснить почему в переменную N записалось максимальное число в массиве?

    • @user-or1hy4xz8u
      @user-or1hy4xz8u 2 года назад

      @@epheymind8475 N - это весь отсортиров. массив, а не какое-то число..

  • @olitakic
    @olitakic 4 года назад +6

    Большое спасибо! Вы огромный молодец. Все доступно и понятно.

  • @golem7060
    @golem7060 5 лет назад +2

    Молодец, не знаю что без тебя делал)

  • @OGIDOG1
    @OGIDOG1 5 лет назад +13

    Отличный материал. Покажите, пожалуйста, реализацию "быстрой сортировки". Она же в большинстве стандартных библиотек реализована (C++, Java).

  • @volselongames4505
    @volselongames4505 2 года назад

    Чувак спасибо за материал, успехов тебе

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

    Какой же хороший человек

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

    Сразу видно нормально

  • @karelalex
    @karelalex 5 лет назад +2

    Можно слегка улучшить алгоритм, убрав перестановку элементов. Делается это примерно так: пишем текущий во временную переменную, затем сравниваем его с предыдущим, если предыдущий больше, то пишем его значение в текущую, сдвигаемся на индекс вниз, опять сравниваем и так далее. Ещё есть вариант, чтобы не проверять, дошли ли мы до начала массива или нет, первой итеррацией найти минимальный элемент и положить его в первую ячейку.

    • @eladkipiani2200
      @eladkipiani2200 4 года назад

      какая разница, если после остановки весь промежуточный ряд надо будет передвигать по тому же принципу через буфер? не проще сразу это делать за один пход? или я что то не допонял?

    • @ZStanislav
      @ZStanislav 4 года назад

      сортировка Шелла и есть усовершенствованная сортировка вставками.

    • @linterrupt
      @linterrupt 3 года назад +2

      @@eladkipiani2200 он имеет ввиду
      int x = arr[i];
      int k = i;
      while (k > 0 and arr[k - 1] > x)
      {
      arr[k] = arr[k - 1];
      k--;
      }
      arr[k] = x;
      В этом случае Не надо будет каждый раз внутри цикла менять местами переменные. Можно просто как в циклическом сдвиге сдвинуть элементы вправо.
      То есть внутри цикла вместо вот этого:
      int tmp = arr[k];
      arr[k] = arr[k - 1];
      arr[k - 1] = tmp;
      j--;
      Мы получаем вот это:
      arr[k] = arr[k - 1];
      k--;
      Меньше операций.

  • @eladkipiani2200
    @eladkipiani2200 4 года назад +2

    Respect

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

    можно такое же видео,только методом выбора?

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

    а сли 0 является элементом массива? что тогда нужно писать в условии выхода из цикла? х равен ноль-терминанте или EOF? что находится в конце целочисельного массив, ведь насколько знаю ноль-терминанта касается массива символов (де-факто - строки)?

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

      Это цикл в цикле. Главный цикл заканчивается, когда i станет равно длинне массива - 1.

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

    Спасибо за ролик. Возник вопрос. Чтобы присвоить значение аргументу функции внутри тела функции, нужно передать его указатель (как в scanf-е). А тут мы передаем массив, а не указатель на него, и присваивание "глобальному" массиву А происходит. Почему так получается?

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

      имя массива - указатель на первый элемент массива

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

      Массив никогда не копируется в функцию, это не как переменная. В функцию передается адрес массива. если копировать сам массив на 10 000 элементов, то это безумие, от того сколько ресурсов понадобится. По умолчарию там заложено &mas[ ] а на деле просто mas[ ]

  • @ZStanislav
    @ZStanislav 4 года назад

    сортировка Шелла интересует.

  • @alexandrprodan8794
    @alexandrprodan8794 4 года назад

    Извините за тупой вопрос, но как сортировать по убыванию, а то я попробовал сделать но у меня цикл бесконечный получился. Помогите пожалуйста.

    • @user-ic2wx3qw1w
      @user-ic2wx3qw1w 4 года назад +1

      Не поздна надеюсь отвечаю, просто в while (k > 0 and arr[k-1] > arr[k]) измени условие arr[k-1] > arr[k] на arr[k-1] < arr[k]

    • @alexandrprodan8794
      @alexandrprodan8794 4 года назад +2

      @@user-ic2wx3qw1w я справился сам посже, но спасибо

  • @MineTest_game
    @MineTest_game Год назад

    I like Code::Blocks. It is my favorite IDE for Windows.

  • @descar1626
    @descar1626 4 года назад +4

    ее, киса на фоне

  • @alexandrprodan8794
    @alexandrprodan8794 4 года назад

    сортировка вставками 11:15

  • @lestatlvv
    @lestatlvv 5 лет назад +1

    14:14 Почему такой большой execution time (4.256s)?

    • @alexandrvint7098
      @alexandrvint7098 5 лет назад

      Вероятно срабатывает фаервол, т.е. начинает проверять скомпилированный исполняемый файл.

    • @dezm0n679
      @dezm0n679 5 лет назад +11

      Время ввода учитывается вроде там

    • @Mani_Fast
      @Mani_Fast 2 года назад

      @@dezm0n679 да

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

    в строке второго цикла while (k > 0 and A[k-1] > A[k]) стоит сказать, что второе условие (после and не выполняется при k = -1) это совсем не очевидно, т.к. выражение в скобках ( ) и по логике математики должно быть вычислено полностью

    • @allex6829
      @allex6829 Год назад +2

      По логике k = -1, это выход за границы массива, и первое условие говорит об этом, Я пойду только пока я больше нуля( k > 0)

    • @nicholasspezza9449
      @nicholasspezza9449 4 месяца назад

      чушь какую-то написал.

  • @user-lh7vp8ju9u
    @user-lh7vp8ju9u 11 месяцев назад

    на какую сортировку похож этот код?
    for(int i = 0; i < n; i++)
    {
    for(int j = 1; j < n-i; j++)
    {
    if(arr[i] > arr[n-j])
    {
    int tmp = arr[n-j];
    arr[n-j] = arr[i];
    arr[i] = tmp;
    }
    }
    }

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

    Сортировка не работает

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

    это bubble sort?

    • @MrMASANICH
      @MrMASANICH Год назад

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

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

    Бедные солдаты.

  • @maxrus6173
    @maxrus6173 5 лет назад +1

    Без 39 строки (К-=1) тоже работает

    • @juvusart
      @juvusart 5 лет назад +2

      Нет, не работает. Но если в этой строке поставить i = 1, то получится сортировка пузырьком.

  • @user-ig3tr8yh8d
    @user-ig3tr8yh8d 2 месяца назад

    Чел видимо в армии небыл, прапор сортирует от высокого к низкому😂

  • @lesgrossman834
    @lesgrossman834 3 года назад +3

    Хах. Заучка математик проиграет прапору. Прапор может обойтись одной строкой кода со встроенной функцией бысто(мля)...

    • @user-wb1zc6we4y
      @user-wb1zc6we4y 3 года назад +6

      Какой блять строкой кода, какой нахуй заучка математик? Он показывает один из алгоритмов сортировки и как его написать самому. То что ты отсортируешь этот массив "строчкой кода", будет означать лишь то, что ты воспользовался встроенной функцией

    • @lesgrossman834
      @lesgrossman834 3 года назад +3

      @@user-wb1zc6we4y ты идиот без чувства юмора и тебе девки не дают.

  • @chyapay
    @chyapay 4 года назад +1

    почему не взять и не купить нормальный микрофон, который не СКРИПИТ, и тогда восприятие материала будет более комфортным для зрителя?

  • @user-td3nd6qy8m
    @user-td3nd6qy8m 3 года назад +1

    Умный человек , хоть и гей .

    • @Andrew_Petrovich_Zykov
      @Andrew_Petrovich_Zykov 10 месяцев назад

      сильны ты свой интеллектуальный уровень завысил...