ВУЗ:
Составители:
Рубрика:
178
5 7 сравниваем,
3 5 сравниваем.
Четвертый просмотр: 1 2 3 | 5 7 9
7 9 сравниваем,
5 7 сравниваем.
Пятый просмотр: 1 2 3 5 | 7 9
7 9 сравниваем.
Завершены все n-1 (в данном случае пять) просмотров. Массив отсортирован. В
данном случае четвертый и пятый просмотр оказались лишними, однако в общем
случае они необходимы. Ниже приводится фрагмент программы, реализующий
данный алгоритм.
for i:=1 to n-1 do {всплывание «пузырька» на i-ое место}
for j:=n downto i+1 do
if a[j-1]>a[j] then begin r:=a[j]; a[j]:=a[j-1]; a[j-1]:=r end.
Упражнения:
1. Перепишите фрагмент программы так, чтобы просмотр соседей
осуществлялся с первого элемента массива и «тяжелые» элементы оседали в конце
массива.
2. Модифицируйте предложенный вариант алгоритма сортировки обменом,
чтобы убрать лишние просмотры.
3. Постройте такой тест, для которого все n-1 просмотры будут
результативными, т.е. в ходе просмотра будет совершен хотя бы один обмен
элементов.
4. Установите, какую задачу решает представленный ниже фрагмент
программы. Сравните данный алгоритм с алгоритмом метода «пузырька».
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then begin r:=a[i]; a[i]:=a[j]; a[j]:=r end.
11.8. Двумерные массивы
Двумерный массив можно рассматривать как одномерный массив, каждый
элемент которого сам является одномерным массивом. Поэтому для работы с
элементами двумерного массива нужно организовать два цикла. Каждый из них
отвечает за перебор значений соответствующего индекса. Для двумерного массива
можно использовать те же схемы перебора, что и для одномерного, но комбинаций
здесь будет в
два раза больше (почему?).
Рассмотрим один из способов ввода элементов двумерного массива. Будем
использовать схему перебора по одному от начала массива к концу.
Соответствующий фрагмент алгоритма приведен ниже. Считаем, что массив имеет
размерность n·m.
for i:=1 to n do {перебираем строки двумерного массива}
for j:=1 to m do {перебираем столбцы двумерного массива}
read(a[i,j]).
178 5 7 сравниваем, 3 5 сравниваем. Четвертый просмотр: 1 2 3 |5 7 9 7 9 сравниваем, 5 7 сравниваем. Пятый просмотр: 1 2 3 5 |7 9 7 9 сравниваем. Завершены все n-1 (в данном случае пять) просмотров. Массив отсортирован. В данном случае четвертый и пятый просмотр оказались лишними, однако в общем случае они необходимы. Ниже приводится фрагмент программы, реализующий данный алгоритм. for i:=1 to n-1 do {всплывание «пузырька» на i-ое место} for j:=n downto i+1 do if a[j-1]>a[j] then begin r:=a[j]; a[j]:=a[j-1]; a[j-1]:=r end. Упражнения: 1. Перепишите фрагмент программы так, чтобы просмотр соседей осуществлялся с первого элемента массива и «тяжелые» элементы оседали в конце массива. 2. Модифицируйте предложенный вариант алгоритма сортировки обменом, чтобы убрать лишние просмотры. 3. Постройте такой тест, для которого все n-1 просмотры будут результативными, т.е. в ходе просмотра будет совершен хотя бы один обмен элементов. 4. Установите, какую задачу решает представленный ниже фрагмент программы. Сравните данный алгоритм с алгоритмом метода «пузырька». for i:=1 to n-1 do for j:=i+1 to n do if a[i]>a[j] then begin r:=a[i]; a[i]:=a[j]; a[j]:=r end. 11.8. Двумерные массивы Двумерный массив можно рассматривать как одномерный массив, каждый элемент которого сам является одномерным массивом. Поэтому для работы с элементами двумерного массива нужно организовать два цикла. Каждый из них отвечает за перебор значений соответствующего индекса. Для двумерного массива можно использовать те же схемы перебора, что и для одномерного, но комбинаций здесь будет в два раза больше (почему?). Рассмотрим один из способов ввода элементов двумерного массива. Будем использовать схему перебора по одному от начала массива к концу. Соответствующий фрагмент алгоритма приведен ниже. Считаем, что массив имеет размерность n·m. for i:=1 to n do {перебираем строки двумерного массива} for j:=1 to m do {перебираем столбцы двумерного массива} read(a[i,j]).
Страницы
- « первая
- ‹ предыдущая
- …
- 174
- 175
- 176
- 177
- 178
- …
- следующая ›
- последняя »