Ваше сводное значение всегда будет значением arr[(i)/2]
, равным arr[2]
, независимо от того, какую часть массива вы сортируете в данный момент. Передайте значения left
и right
в partition
, чтобы он знал, какие значения следует учитывать для текущего вызова, в quickSort
.
Кроме того, значения left
и right
, которые вы передаете для начального вызова quickSort
, соответственно равны 20 и 21, что, безусловно, не то, что вы предполагали. У вас есть массив длины 100, и вы инициализировали первые 21 элемент, поэтому вы, вероятно, хотите передать 0 и 21 для этих параметров.
Но первое, что вам, вероятно, следует сделать, если вы хотите проверить быструю сортировку с другой сводной стратегией, это заставить ее работать сначала с типичным Поворотная стратегия, подобная той, что продемонстрирована в вашем учебнике. Начните с работающей реализации, и только затем , если вы начнете экспериментировать с вариациями. Вы должны быть в состоянии найти работающую реализацию в своем учебнике или в своих заметках.