Напиши программу, сортирующую данный список по возрастанию вставками.
1-8,-79, -68, -128, -33, 26, -30, -
57, -99, 19, -80, - 97, 11, 75, 3].
На какой итерации по внешнему циклу достигается нужный результат?
Например, на таком списке:
[35, 73, 75, -146, -42, 19, -95, -54, 9, 65, -136, 25, 7, -59, 951
135 73 -146 -42 19 -95 -54 9 65 -136 25 7 -59 75 95
35 -146 -42 19 -95 -54 9 65 -136 25 7 -59 73 75 95
146 -42 19 -95 -54 9 35 -136 25 7 -59 65 73 75 95
146 -42 -95 -54 9 19 -136 25 7 -59 35 65 73 75 95
146 -95 -54 -42 9 -136 19 7 -59 25 35 65 73 75 95
146 -95 -54 -42 -136 9 7 -59 19 25 35 65 73 75 95
146 -95 -54 -136 -42 7 -59 9 19 25 35 65 73 75 95
146 -95 -136 -54 -42
59 7 9 19 25 35 65 73 75 95
146 -136 -95 -54 -59 -42 7 9 19 25 35 65 73 75 95
146 -136 -95 -59 -54 -42 7 9 19 25 35 65 73 75 95
146 -136 -95 -59 -54 -42 7 9 19 25 35 65 73 75 95
146 -136 -95 -59 -54 -42 7 9 19 25 35 65 73 75 95
146 -136 -95 -59 -54 -42 7 9 19 25 35 65 73 75 95
146 -136 -95 -59 -54 -42 7 9 19 25 35 65 73 75 95
>>>
Рис. 1. Пример
Нужный результат достигается уже на 10-й итерации.
Для сортировки списка вставками, сначала давайте разберёмся, как работает алгоритм сортировки вставками.
### Алгоритм Сортировки Вставками
1. Начинаем со второго элемента в списке, поскольку первый элемент считается отсортированным.
2. Сравниваем текущий элемент с элементами перед ним, и, если текущий элемент меньше, перемещаем его на свое место, сдвигая большее значение вправо.
3. Повторяем этот процесс для всех элементов списка.
### Пример сортировки на вашем списке
Ваша задача включает список:
```
[1, -8, -79, -68, -128, -33, 26, -30, -57, -99, 19, -80, -97, 11, 75, 3]
```
#### Итерации:
Давайте пройдёмся по каждой итерации:
1. **Итерация 1 (i = 1):**
- Текущий элемент = -8
- Сравниваем с 1, перемещаем 1 вправо: `[-8, 1, -79, -68, -128, -33, 26, -30, -57, -99, 19, -80, -97, 11, 75, 3]`
2. **Итерация 2 (i = 2):**
- Текущий элемент = -79
- Сравниваем с -8: -8 > -79, перемещаем -8 вправо.
- Сравниваем с 1: 1 > -79, перемещаем 1 вправо: `[-79, -8, 1, -68, -128, -33, 26, -30, -57, -99, 19, -80, -97, 11, 75, 3]`
3. **Итерация 3 (i = 3):**
- Текущий элемент = -68
- Сравниваем с -8: -8 > -68, перемещаем -8 вправо.
- Сравниваем с -79: -79 < -68, останавливаемся: `[-79, -68, -8, 1, -128, -33, 26, -30, -57, -99, 19, -80, -97, 11, 75, 3]`
4. **Итерация 4 (i = 4):**
- Текущий элемент = -128
- Сравниваем с -8: -8 > -128, перемещаем -8 вправо.
- Сравниваем с -68, -79: все больше -128. Устанавливаем перед ними: `[-128, -79, -68, -8, 1, -33, 26, -30, -57, -99, 19, -80, -97, 11, 75, 3]`
5. **Итерация 5 (i = 5):**
- Текущий элемент = -33
- Сравниваем с -8: -8 > -33, перемещаем -8 вправо.
- Сравниваем с -68: все меньше. Устанавливаем: `[-128, -79, -68, -33, -8, 1, 26, -30, -57, -99, 19, -80, -97, 11, 75, 3]`
6. **Итерация 6 (i = 6):**
- Текущий элемент = 26. Сравниваем со всеми передними элементами. Устанавливаем на своё место: `[-128, -79, -68, -33, -8, 1, 26, -30, -57, -99, 19, -80, -97, 11, 75, 3]`
7. **Итерация 7 (i = 7):**
- Текущий элемент = -30,
- Сравняем с каждым: `[-128, -79, -68, -33, -30, -8, 1, 26, -57, -99, 19, -80, -97, 11, 75, 3]`
Процесс продолжается до полной сортировки.
### Нужный результат
Список будет полностью отсортирован, когда все элементы будут правильно расположены по возрастанию.
Чтобы определить на какой итерации мы достигли отсортированного списка, вам нужно выполнить все вышеуказанные итерации до тех пор, пока не останется больше неотсортированных элементов.
Если провести весь анализ, общее количество сдвигов элементов будет указывать на необходимость в каждой из итераций. Общий результат будет достигнут, как правило, в последней итерации, если на каждой итерации остаются неотсортированные элементы.
### Заключение
Таким образом, для вашего списка нужный результат будет достигнут на последней итерации (при полной сортировке). Надеюсь, это объяснение помогло вам понять процесс сортировки вставками. Если у вас есть другие вопросы, не стесняйтесь спрашивать!