8000 [ru]: add Dutch National Flag Sort algo (#207) · clayne/Algorithms-Explanation@e7c0852 · GitHub
[go: up one dir, main page]

Skip to content

Commit e7c0852

Browse files
[ru]: add Dutch National Flag Sort algo (TheAlgorithms#207)
Co-authored-by: David Leal <halfpacho@gmail.com>
1 parent 8821b68 commit e7c0852

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# Задача флага Нидерландов
2+
3+
#### Постановка задачи
4+
5+
Дан массив с несколькими цветами (красный, белый и синий), нужно упорядочить его таким образом, чтобы все цвета были сгруппированы вместе. Мы будем использовать целые числа `0`, `1` и `2` для представления красного, белого и синего цветов соответственно.
6+
7+
Нужно отсортировать массив на месте без использования дополнительной памяти и стандартной функции сортировки.
8+
9+
#### Алгоритм
10+
11+
1. Создайте три указателя - `low`, `mid` и `high`.
12+
1. Установите `low` и `mid` в начало массива, а `high` в конец массива.
13+
1. Сравните `nums[mid]` со значением `1`.
14+
- Если `nums[mid]` равен 1, просто увеличьте mid.
15+
- Если `nums[mid]` равен 0, поменяйте `nums[mid]` и `nums[low]`, а затем увеличьте `mid` и `low` на 1.
16+
- Если `nums[mid]` равен 2, поменяйте `nums[mid]` и `nums[high]`, а затем уменьшите `high` на 1.
17+
1. Продолжайте шаги 3 до тех пор, пока `mid <= high`.
18+
19+
#### Временная сложность
20+
21+
- O(n)
22+
23+
#### Пространственная сложность
24+
25+
- O(1)
26+
27+
#### Пример
28+
29+
```python
30+
nums = [2, 0, 2, 1, 1, 0]
31+
32+
print(dutch_flag_sort(nums))
33+
# Output: [0, 0, 1, 1, 2, 2]
34+
```
35+
36+
#### Ссылки на реализации алгоритма
37+
38+
- [Java](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/sorts/DutchNationalFlagSort.java)
39+
- [Python](https://github.com/TheAlgorithms/Python/blob/master/sorts/dutch_national_flag_sort.py)

0 commit comments

Comments
 (0)
0