А разве так можно было?) Простота - мать таланта. Главное - показан алгоритм, который можно осмыслить визуально , без награмождения слов. Огромное спасибо.
В левой части массива ищется первый элемент, который МЕНЬШЕ ИЛИ РАВЕН ОПОРНОМУ, а в правой - который БОЛЬШЕ ОПОРНОГО (а не больше или равен). Или наоборот.
В функцию передается копия указателя на начало массива. Поэтому содержимое массива мы можем в функции изменить. А вот указатель на его начало (совпадает с именем массива) - нет!
Когда вызывается новая версия этой функции: 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. И тогда будет возврат без нового вызова рекурсивной функции.
Гневный комментарий