Лекции по проге / 6_Комбинирование операторов
.pdf
Поиск в массиве минимального элемента (его индекса), начиная с i-го элемента
|
|
0 |
|
1 |
2 |
3 |
|
|
|||
Исходный массив vector |
|
2 5 3 3 |
N = 4 |
i = 1 |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Шаг 1. |
i_min = i |
|
|
|
|
|
|
|
|
|
|
|
i_min |
0 |
|
|
|
2 |
3 |
|
|
||
|
1 |
|
|
||||||||
|
vector |
|
3 |
|
|
5 |
2 |
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Шаг 2. |
Так как vector[2] < vector[i_min], то i_min = 2 |
||||||||||
|
i_min |
0 |
|
|
|
|
3 |
|
|
||
|
1 |
2 |
|
|
|||||||
|
vector |
|
3 |
|
|
5 |
2 |
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Шаг 3. |
Так как vector[3] > vector[i_min], то ---------- |
||||||||||
|
i_min |
0 |
|
1 |
|
|
|
|
|
||
|
2 |
3 |
|
|
|||||||
|
vector |
|
3 |
|
5 |
2 |
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61
Задание
Адаптируйте алгоритм поиска минимального элемента для реализации
действия «Найти среди элементов vector[i...(N-1)] минимальный элемент»
62
Декомпозиция поиска минимального элемента
63
Декомпозиция поиска минимального элемента
/* На место vector[i] поместить минимальный элемент
|
среди vector[i...(N-1)] ... */ |
|
/* ...Найти среди элементов vector[i...(N-1)] |
|
минимальный элемент (его индекс) */ |
|
i_min = i; |
|
for(int j = i+1; j <= N-1; j++) |
|
{ |
|
if(vector[j] < vector[i_min]) |
|
{ i_min = j; } |
|
} |
|
/* ...Поменять местами элементы с индексами i и |
64 |
i_min */ |
Задание
Декомпозируйте действие
«Поменять местами элементы с индексами i и
i_min», представив его последовательностью более простых действий
65
Обмен местами двух элементов массива
66
Декомпозиция обмена местами двух элементов массива
67
Декомпозиция поиска минимального элемента
/* На место vector[i] поместить минимальный элемент среди vector[i...(N-1)] ... */
/* ...Найти среди элементов vector[i...(N-1)] минимальный элемент (его индекс) */
/* ...Поменять местами элементы с индексами i и
i_min */ |
|
buffer |
= vector[i]; |
vector[i] |
= vector[i_min]; |
vector[i_min] |
= buffer; |
68
Это надо помнить!
При записи последовательных действий порядок выполнения может влиять на ответ
Условие, помещенное внутри цикла, позволяет выполнять повторяющееся действие только на определенных шагах цикла
Условие, добавленное к циклу через операцию логического И, позволяет прекратить цикл при наступлении каких-то обстоятельств
Вложенные циклы, как правило, должны использо- 69 вать разные переменные
