Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции по проге / 6_Комбинирование операторов

.pdf
Скачиваний:
30
Добавлен:
14.03.2016
Размер:
387.56 Кб
Скачать

Поиск в массиве минимального элемента (его индекса), начиная с 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 вать разные переменные