You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit ad0c2aa
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: content/russian/cs/sorting/quicksort.md
+11-8Lines changed: 11 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,13 +7,18 @@ draft: true
7
7
Быстрая сортировка заключается в том, что на каждом шаге мы находим опорный элемент, все элементы, которые меньше его кидаем в левую часть, остальные в правую, а затем рекурсивно спускаемся в обе части.
8
8
9
9
```cpp
10
+
// partition - функция разбивающие элементы
11
+
// на меньшие и больше/равные a[index],
12
+
// при этом функция возвращает границу разбиения
13
+
voidpartition(int l, int r, int p) {
14
+
15
+
}
16
+
10
17
void quicksort(int l, int r){
11
18
if (l < r){
12
19
int index = (l + r) / 2; /* index - индекс опорного элемента для
13
20
начала сделаем его равным середине отрезка*/
14
-
index = divide(l, r, index); /* divide - функция разбивающие элементы
15
-
на меньшие и больше/равные a[index],
16
-
при этом функция возвращает границу разбиения*/
21
+
index = partition(l, r, index);
17
22
quicksort(l, index);
18
23
quicksort(index + 1, r);
19
24
}
@@ -25,8 +30,6 @@ void quicksort(int l, int r){
25
30
26
31
Существуют несколько выходов из этой ситуации :
27
32
28
-
2. Давайте если быстрая сортировка работает долго, то запустим любую другую сортировку за $NlogN$.
29
-
30
-
3. Давайте делить массив не на две, а на три части(меньше, равны, больше).
31
-
32
-
4. Чтобы избавиться от проблемы с максимумом/минимумом в середине, давайте **брать случайный элемент**.
33
+
1. Давайте если быстрая сортировка работает долго, то запустим любую другую сортировку за $NlogN$.
34
+
2. Давайте делить массив не на две, а на три части(меньше, равны, больше).
35
+
3. Чтобы избавиться от проблемы с максимумом/минимумом в середине, давайте **брать случайный элемент**.
0 commit comments