Вы гений! Я 3 дня читал разные коды с рекурсией/без, смотрел обьяснения, но нигде не было понятной, пошаговой реазлизации, вы спасли мою мотивацию продолжать развиваться, спасибо !
Спасибо хорошее объяснение. Только в конце не понятна механика Merge(array,left,right). Если мы передали самые меньшие числа Left/right. То откуда появляться числа более высоких под массивов?
Спасибо за устные разъяснения алгоритма, очень помогло разобраться, как работает алгоритм Но код, конечно, можно улучшить намного, метод Sort точно, все проверки можно сузить до примерно такого состояния. Делает абсолютно то же самое, но выглядит понятнее for (int i = 0; i < merged.Length; ++i) { if (indexMinOfFirst < first.Length && indexMinOfSecond < second.Length) { merged[i] = first[indexMinOfFirst] > second[indexMinOfSecond] ? second[indexMinOfSecond++] : first[indexMinOfFirst++]; } else { merged[i] = indexMinOfSecond < second.Length ? second[indexMinOfSecond++] : first[indexMinOfFirst++]; } }
так то конечно все прекрассноно, меня терзают смутные сомненья что создание новых массивов каждый раз ускоряет процесс. Есть метод создания динамическогго пивота и размещения элементов по бокам от него. class Program{ static void Main(string[] args){ int[] inputArray = {9,12,9,2,17,1,6}; int[] array2= QuikSort(inputArray, 0, inputArray.Length-1); foreach (var n in array2) Console.WriteLine(n); } public static int[] QuikSort(int[] array, int minIndex, int maxIndex) { if (minIndex>=maxIndex) return array; int pivotIndex = GetPivot(array,minIndex, maxIndex); QuikSort(array, minIndex, pivotIndex - 1); QuikSort(array, pivotIndex + 1, maxIndex); return array; } public static int GetPivot(int[] array, int minIndex, int maxIndex) { int pivot = minIndex - 1; for (int i = minIndex; i
Отлично объяснил- лучшее во всем Ютубе!
наконец-то нормальный код увидел, а то на сайтах шлак какой-то публикуют, а тут хоть можно разобраться + все понятно объяснил. Спасибо!
Большое спасибо! Смог разобраться с данным алгоритмом только после этого видео. Во всех остальных случаях постоянно были недопонимания.
Огромная благодарность за внятное и простое объяснение! Спасибо!
Вы гений! Я 3 дня читал разные коды с рекурсией/без, смотрел обьяснения, но нигде не было понятной, пошаговой реазлизации, вы спасли мою мотивацию продолжать развиваться, спасибо !
круто!! перелопатила весь инет, наконец то что то стало понятно!! спасибо огромное!
Спасибо большое, доступно объяснил !🤝
Неплохое объяснение - я тоже на канале у себя снял про mergesort видео
Спасибо
чел, ты лучший, продолжай в том же духе!!!!!
Спасибо хорошее объяснение. Только в конце не понятна механика Merge(array,left,right). Если мы передали самые меньшие числа Left/right. То откуда появляться числа более высоких под массивов?
Можно ли увидеть полный код?
Спасибо за устные разъяснения алгоритма, очень помогло разобраться, как работает алгоритм
Но код, конечно, можно улучшить намного, метод Sort точно, все проверки можно сузить до примерно такого состояния. Делает абсолютно то же самое, но выглядит понятнее
for (int i = 0; i < merged.Length; ++i)
{
if (indexMinOfFirst < first.Length && indexMinOfSecond < second.Length)
{
merged[i] = first[indexMinOfFirst] > second[indexMinOfSecond] ? second[indexMinOfSecond++] : first[indexMinOfFirst++];
}
else
{
merged[i] = indexMinOfSecond < second.Length ? second[indexMinOfSecond++] : first[indexMinOfFirst++];
}
}
так то конечно все прекрассноно, меня терзают смутные сомненья что создание новых массивов каждый раз ускоряет процесс. Есть метод создания динамическогго пивота и размещения элементов по бокам от него.
class Program{
static void Main(string[] args){
int[] inputArray = {9,12,9,2,17,1,6};
int[] array2= QuikSort(inputArray, 0, inputArray.Length-1);
foreach (var n in array2)
Console.WriteLine(n);
}
public static int[] QuikSort(int[] array, int minIndex, int maxIndex) {
if (minIndex>=maxIndex)
return array;
int pivotIndex = GetPivot(array,minIndex, maxIndex);
QuikSort(array, minIndex, pivotIndex - 1);
QuikSort(array, pivotIndex + 1, maxIndex);
return array;
}
public static int GetPivot(int[] array, int minIndex, int maxIndex) {
int pivot = minIndex - 1;
for (int i = minIndex; i
Как делить массив если количество индексов не четное ?
никто не знает и не даёт ответа. Алгоритм полное говно.
Тип int теоретически просто убирает дробную часть, оставляя целое. Например, int k = 546.54 то k будет иметь значение 546.
молись
/ - это целочисленное деление
У меня не работает
Переписал?
@@dsdf15 думаю , за 9 месяцев можно было переписать 💀
@@specificcross ну мало ли, я волнуюсь xd