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

  Рет қаралды 73,377

Тимофей Хирьянов

Тимофей Хирьянов

Күн бұрын

Пікірлер: 54
@maxrus6173
@maxrus6173 5 жыл бұрын
Лучшее объяснение алгоритма вставки на всем русскоязычном youtube!
@victoriaco1262
@victoriaco1262 2 ай бұрын
Огромных успехов Вам, Тимофей Федорович и побольше здоровых и таких же умных детей Вам)) Спасибо большое! 😊
@СергейКоролев-о1ю
@СергейКоролев-о1ю 3 жыл бұрын
Браво, Маэстро! По Вашему уроку объяснил сортировку по методу вставки! Все поняли и всё понятно! СПАСИБО от Солдатов!
@epheymind8475
@epheymind8475 2 жыл бұрын
Не могли бы объяснить почему в переменную N записалось максимальное число в массиве?
@ДмитрийНормов-ю6ц
@ДмитрийНормов-ю6ц 2 жыл бұрын
@@epheymind8475 N - это весь отсортиров. массив, а не какое-то число..
@olitakic
@olitakic 4 жыл бұрын
Большое спасибо! Вы огромный молодец. Все доступно и понятно.
@karelalex
@karelalex 5 жыл бұрын
Можно слегка улучшить алгоритм, убрав перестановку элементов. Делается это примерно так: пишем текущий во временную переменную, затем сравниваем его с предыдущим, если предыдущий больше, то пишем его значение в текущую, сдвигаемся на индекс вниз, опять сравниваем и так далее. Ещё есть вариант, чтобы не проверять, дошли ли мы до начала массива или нет, первой итеррацией найти минимальный элемент и положить его в первую ячейку.
@eladkipiani2200
@eladkipiani2200 5 жыл бұрын
какая разница, если после остановки весь промежуточный ряд надо будет передвигать по тому же принципу через буфер? не проще сразу это делать за один пход? или я что то не допонял?
@ZStanislav
@ZStanislav 4 жыл бұрын
сортировка Шелла и есть усовершенствованная сортировка вставками.
@linterrupt
@linterrupt 4 жыл бұрын
@@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--; Меньше операций.
@golem7060
@golem7060 5 жыл бұрын
Молодец, не знаю что без тебя делал)
@aidarazizov141
@aidarazizov141 3 жыл бұрын
Какой же хороший человек
@buhar901
@buhar901 2 жыл бұрын
Сразу видно нормально
@volselongames4505
@volselongames4505 2 жыл бұрын
Чувак спасибо за материал, успехов тебе
@MineTest_game
@MineTest_game 2 жыл бұрын
I like Code::Blocks. It is my favorite IDE for Windows.
@nicholasspezza9449
@nicholasspezza9449 11 ай бұрын
u r loh from the block.
@derka211
@derka211 4 жыл бұрын
а сли 0 является элементом массива? что тогда нужно писать в условии выхода из цикла? х равен ноль-терминанте или EOF? что находится в конце целочисельного массив, ведь насколько знаю ноль-терминанта касается массива символов (де-факто - строки)?
@elophostia
@elophostia 4 жыл бұрын
Это цикл в цикле. Главный цикл заканчивается, когда i станет равно длинне массива - 1.
@the237th
@the237th 3 жыл бұрын
Спасибо за ролик. Возник вопрос. Чтобы присвоить значение аргументу функции внутри тела функции, нужно передать его указатель (как в scanf-е). А тут мы передаем массив, а не указатель на него, и присваивание "глобальному" массиву А происходит. Почему так получается?
@ЕвгенийГостев-ъ8у
@ЕвгенийГостев-ъ8у 3 жыл бұрын
имя массива - указатель на первый элемент массива
@allex6829
@allex6829 Жыл бұрын
Массив никогда не копируется в функцию, это не как переменная. В функцию передается адрес массива. если копировать сам массив на 10 000 элементов, то это безумие, от того сколько ресурсов понадобится. По умолчарию там заложено &mas[ ] а на деле просто mas[ ]
@alexandrprodan8794
@alexandrprodan8794 4 жыл бұрын
сортировка вставками 11:15
@mihaitimofti9789
@mihaitimofti9789 3 жыл бұрын
это bubble sort?
@MrMASANICH
@MrMASANICH Жыл бұрын
Но вопрос логичный, у меня подбный тоже возник!
@ВиталийЧайкин-щ1с
@ВиталийЧайкин-щ1с 2 жыл бұрын
в строке второго цикла while (k > 0 and A[k-1] > A[k]) стоит сказать, что второе условие (после and не выполняется при k = -1) это совсем не очевидно, т.к. выражение в скобках ( ) и по логике математики должно быть вычислено полностью
@allex6829
@allex6829 Жыл бұрын
По логике k = -1, это выход за границы массива, и первое условие говорит об этом, Я пойду только пока я больше нуля( k > 0)
@nicholasspezza9449
@nicholasspezza9449 11 ай бұрын
чушь какую-то написал.
@descar1626
@descar1626 5 жыл бұрын
ее, киса на фоне
@lestatlvv
@lestatlvv 6 жыл бұрын
14:14 Почему такой большой execution time (4.256s)?
@alexandrvint7098
@alexandrvint7098 6 жыл бұрын
Вероятно срабатывает фаервол, т.е. начинает проверять скомпилированный исполняемый файл.
@dezm0n679
@dezm0n679 5 жыл бұрын
Время ввода учитывается вроде там
@Mani_Fast
@Mani_Fast 2 жыл бұрын
@@dezm0n679 да
@ishanelava6962
@ishanelava6962 4 жыл бұрын
можно такое же видео,только методом выбора?
@eladkipiani2200
@eladkipiani2200 5 жыл бұрын
Respect
@ZStanislav
@ZStanislav 4 жыл бұрын
сортировка Шелла интересует.
@alexandrprodan8794
@alexandrprodan8794 4 жыл бұрын
Извините за тупой вопрос, но как сортировать по убыванию, а то я попробовал сделать но у меня цикл бесконечный получился. Помогите пожалуйста.
@ДмитрийКошелев-п5э
@ДмитрийКошелев-п5э 4 жыл бұрын
Не поздна надеюсь отвечаю, просто в while (k > 0 and arr[k-1] > arr[k]) измени условие arr[k-1] > arr[k] на arr[k-1] < arr[k]
@alexandrprodan8794
@alexandrprodan8794 4 жыл бұрын
@@ДмитрийКошелев-п5э я справился сам посже, но спасибо
@АндрейОлеговичКулаков
@АндрейОлеговичКулаков Жыл бұрын
на какую сортировку похож этот код? 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 2 жыл бұрын
Сортировка не работает
@andreydar2823
@andreydar2823 4 жыл бұрын
Бедные солдаты.
@maxrus6173
@maxrus6173 5 жыл бұрын
Без 39 строки (К-=1) тоже работает
@juvusart
@juvusart 5 жыл бұрын
Нет, не работает. Но если в этой строке поставить i = 1, то получится сортировка пузырьком.
@ggdeaim
@ggdeaim Ай бұрын
А я не понял почему в объяснение числа (солдаты) приходят по очереди, а алгоритм реализован для уже заполненного массива?
@Руки-Крюки-е1т
@Руки-Крюки-е1т 9 ай бұрын
Чел видимо в армии небыл, прапор сортирует от высокого к низкому😂
@lesgrossman834
@lesgrossman834 4 жыл бұрын
Хах. Заучка математик проиграет прапору. Прапор может обойтись одной строкой кода со встроенной функцией бысто(мля)...
@АндрейЗиновьев-г9л
@АндрейЗиновьев-г9л 4 жыл бұрын
Какой блять строкой кода, какой нахуй заучка математик? Он показывает один из алгоритмов сортировки и как его написать самому. То что ты отсортируешь этот массив "строчкой кода", будет означать лишь то, что ты воспользовался встроенной функцией
@lesgrossman834
@lesgrossman834 4 жыл бұрын
@@АндрейЗиновьев-г9л ты идиот без чувства юмора и тебе девки не дают.
@Уэф-ф7е
@Уэф-ф7е 4 жыл бұрын
Умный человек , хоть и гей .
@Andrew_Petrovich_Zykov
@Andrew_Petrovich_Zykov Жыл бұрын
сильны ты свой интеллектуальный уровень завысил...
@chyapay
@chyapay 4 жыл бұрын
почему не взять и не купить нормальный микрофон, который не СКРИПИТ, и тогда восприятие материала будет более комфортным для зрителя?
Асимптотика сортировок. Сортировка подсчётом на Си
22:18
Адреса и указатели в Си. Адресная арифметика
27:47
Тимофей Хирьянов
Рет қаралды 167 М.
1% vs 100% #beatbox #tiktok
01:10
BeatboxJCOP
Рет қаралды 67 МЛН
Tuna 🍣 ​⁠@patrickzeinali ​⁠@ChefRush
00:48
albert_cancook
Рет қаралды 148 МЛН
So Cute 🥰 who is better?
00:15
dednahype
Рет қаралды 19 МЛН
Копирование массива, реверс циклический сдвиг на Си
20:30
Выделение и освобождение динамической памяти в Си
27:39
Техника безопасности при работе с памятью в Си
19:25
Тимофей Хирьянов
Рет қаралды 35 М.
Двумерные массивы в Си: обычные и динамические
21:49
Тимофей Хирьянов
Рет қаралды 75 М.
Блок схема алгоритма (часть 1)
29:03
Прохоров Владимир
Рет қаралды 75 М.
Зачем нужны указатели в C++?
8:14
С++ для начинающих
Рет қаралды 14 М.
Рекурсия. Репка и матрёшка
18:37
Тимофей Хирьянов
Рет қаралды 120 М.
1% vs 100% #beatbox #tiktok
01:10
BeatboxJCOP
Рет қаралды 67 МЛН