А разве так можно было?) Простота - мать таланта. Главное - показан алгоритм, который можно осмыслить визуально , без награмождения слов. Огромное спасибо.
В левой части массива ищется первый элемент, который МЕНЬШЕ ИЛИ РАВЕН ОПОРНОМУ, а в правой - который БОЛЬШЕ ОПОРНОГО (а не больше или равен). Или наоборот.
В функцию передается копия указателя на начало массива. Поэтому содержимое массива мы можем в функции изменить. А вот указатель на его начало (совпадает с именем массива) - нет!
Когда вызывается новая версия этой функции: quickSort(a, left, j), то на место параметра right приходит значение j. Т.е. правая граница уже будет другая! Аналогично, когда мы вызываем quickSort(a, i, right) - изменяется левая граница. Т.е. при входе в новую версию функции может оказаться, что left>right. И тогда будет возврат без нового вызова рекурсивной функции.
А разве так можно было?) Простота - мать таланта. Главное - показан алгоритм, который можно осмыслить визуально , без награмождения слов. Огромное спасибо.
Талантливый преподаватель виден сразу! Спасибо за ясный способ пояснения!
Спасибо!
Вы меня спасли от отчисления, спасибо, огромное за это видео
В левой части массива ищется первый элемент, который МЕНЬШЕ ИЛИ РАВЕН ОПОРНОМУ, а в правой - который БОЛЬШЕ ОПОРНОГО (а не больше или равен). Или наоборот.
Соглашусь, что пока самое ясное объяснение из увиденных. Спасибо.
Самое лучшее объяснение которое я нашел спасибо вам большое.
Отличный урок. Всё по делу и понятно. Спасибо!
Воу, классное объяснение. Я хоть и на java пишу, но все понятно
Отличное объяснение)
Отлично объяснили
Вау, потрясающе!
Все работает👍
Не во всех случаях сортировка проводится корректно, после swap сделал бы проверку на изменение индекса опорного элемента
А разве передается в функцию не копия массива, а исходный массив при выходе из функции останется неизменным?
В функцию передается копия указателя на начало массива. Поэтому содержимое массива мы можем в функции изменить. А вот указатель на его начало (совпадает с именем массива) - нет!
Так, я не понял, как может стать left > right, если оба значения нигде не изменяются? Объясните пожалуйста
Когда вызывается новая версия этой функции: quickSort(a, left, j), то на место параметра right приходит значение j. Т.е. правая граница уже будет другая! Аналогично, когда мы вызываем quickSort(a, i, right) - изменяется левая граница. Т.е. при входе в новую версию функции может оказаться, что left>right. И тогда будет возврат без нового вызова рекурсивной функции.
Гневный комментарий