Я рассматривал реализацию быстрой сортировки (из CLRS 3rd Edition).Я обнаружил, что рекурсивное деление массива идет от низкого индекса к середине-1, а затем снова от среднего + 1 к максимуму.
QUICKSORT(A,p,r)
1 if(p < r)
2 q = PARTITION(A,p,r)
3 QUICKSORT(A,p,q-1)
4 QUICKSORT(A,q+1,r)
А реализация сортировки слиянием задается следующим образом:
MERGE-SORT(A,p,r)
1 if(p < r)
2 q = (p+r)/2 (floor)
3 MERGE-SORT(A,p,q)
4 MERGE-SORT(A,q+1,r)
5 MERGE(A,p,q,r)
Поскольку оба они используют одинаковую стратегию деления, почему быстрая сортировка игнорирует средние элементыпри переходе от 0
к q-1
и q+1
к r
не включается q
, в то время как сортировка слиянием имеет?