Skip to content

Commit ad0c2aa

Browse files
committed
quicksort edits
1 parent c10ebb3 commit ad0c2aa

1 file changed

Lines changed: 11 additions & 8 deletions

File tree

‎content/russian/cs/sorting/quicksort.md‎

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,18 @@ draft: true
77
Быстрая сортировка заключается в том, что на каждом шаге мы находим опорный элемент, все элементы, которые меньше его кидаем в левую часть, остальные в правую, а затем рекурсивно спускаемся в обе части.
88

99
```cpp
10+
// partition - функция разбивающие элементы
11+
// на меньшие и больше/равные a[index],
12+
// при этом функция возвращает границу разбиения
13+
void partition(int l, int r, int p) {
14+
15+
}
16+
1017
void quicksort(int l, int r){
1118
if (l < r){
1219
int index = (l + r) / 2; /* index - индекс опорного элемента для
1320
начала сделаем его равным середине отрезка*/
14-
index = divide(l, r, index); /* divide - функция разбивающие элементы
15-
на меньшие и больше/равные a[index],
16-
при этом функция возвращает границу разбиения*/
21+
index = partition(l, r, index);
1722
quicksort(l, index);
1823
quicksort(index + 1, r);
1924
}
@@ -25,8 +30,6 @@ void quicksort(int l, int r){
2530
2631
Существуют несколько выходов из этой ситуации :
2732
28-
2. Давайте если быстрая сортировка работает долго, то запустим любую другую сортировку за $NlogN$.
29-
30-
3. Давайте делить массив не на две, а на три части(меньше, равны, больше).
31-
32-
4. Чтобы избавиться от проблемы с максимумом/минимумом в середине, давайте **брать случайный элемент**.
33+
1. Давайте если быстрая сортировка работает долго, то запустим любую другую сортировку за $NlogN$.
34+
2. Давайте делить массив не на две, а на три части(меньше, равны, больше).
35+
3. Чтобы избавиться от проблемы с максимумом/минимумом в середине, давайте **брать случайный элемент**.

0 commit comments

Comments
 (0)