Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
информатика АиУ.doc
Скачиваний:
20
Добавлен:
09.11.2018
Размер:
1.56 Mб
Скачать

3. Сортировка и упорядочение массива.

При решении этой задачи требуется сформировать новый массив, состоящий из элементов исходного массива, но расположенных в соответствии с критерием. Для поставленной задачи возможны два пути решения. Первый состоит в том, что исходный массив требуется сохранить для других задач, второй можно переставлять элементы массива. Второй является более предпочтительным, так как более прост в реализации, причем первый случай сводится ко второму путем копирования массивов.

Пример 9.3. Упорядочить массив. А(n) по возрастанию.

Алгоритм имеет следующий вид.

  1. В массиве А(n) найти минимальный элемент и запомнить его номер.

  2. Найденный элемент поменять местами с первым элементом массива.

  3. Повторить поиск минимального элемента со второго до последнего.

  4. Новый минимальный элемент поменять местами со вторым элементом массива.

  5. Этапы 3 и 4 повторить с уменьшающимся остатком массива до полного упорядочивания массива

Рис.9.5. Блок схема алгоритма сортировки массива. А(n) по возрастанию.

4. Накапливание результата

Во многих задачах результат получается путем за счет многократного сложения или умножения чисел составляющих некоторую последовательность, например при вычислении функций при представлении их в виде ряда или вычисление факториала. Все подобные задачи решаются с помощью циклического алгоритма, в котором на каждом новом этапе алгоритма к вычислению привлекается новый элемент множества. При использовании такого алгоритма возникает вопрос о начальном значении вычисляемого результата. Возможны два подхода. В первом случае в качестве начального значения используют первый элемент последовательности. В другом случае выбирают такие начальные значения, чтобы они не исказили результат. При накапливании суммы начальное значение принимают равное 0, а при накапливании произведения – равное 1.

Пример 9.4. Найти сумму ряда

Фрагмент кода для вычисления суммы

s:=0;

for i:=1 to n do

s:=s+a[i]

Пример 9.5. Найти произведение ряда

Фрагмент кода для вычисления произведения

s:=1;

for i:=1 to n do

s:=s*a[i]

5. Вычисление математического ожидания случайной дискретной величины

Математическое ожидание M[X] случайной дискретной величины X, для которой известно n реализаций xi i=1,…,n вычисляется по формуле: где xii-я реализация, n – размер массива x=(x1,…,xn), pi – вероятность появления реализации xi, равная отношению количества элементов имеющих значение xi к количеству элементов массива x за вычетом повторяющихся.

Фрагмент кода для нахождения математического ожидания M[X]:

s:=0; for i:=1 to n do s:s+x[i]*p[i];

6. Порядок выполнения работы

  1. Для указанного варианта задания составить программу в Delphi для решения поставленной задачи. В программе предусмотреть вывод исходного массива и результата в наглядной форме.

  2. Отладить программу и выполнить задание на компьютере.

  3. Составить в соответствии с требованиями отчёт о проделанной работе на ПК в виде файла.

  4. При сдаче лабораторной работы студент должен показать и объяснить результаты выполнения задания на компьютере, представить отчет и ответить на контрольные вопросы.

7. Контрольные вопросы

  1. Какие объекты панели визуальных компонент используются в программе и для чего?

  2. В чём преимущество циклических алгоритмов при решении задач поиска, сортировки накапливания результата?

  3. В какой последовательности будут упорядочены элементы массива в примере 9.3, если среди них встречаются несколько равных по величине?

  4. Каким фактором будет ограничена величина k в примере программы вычисления факториала?

  5. Можно ли выбрать начальные значения z в примерах 9.1, 9.2, равные 0?

  6. Что изменится в работе программы в примере 9.3 , если операцию отношения ≥ заменить на операцию <?

  7. Какие переменные используются в программе и для чего они предназначены?

  8. Привести алгоритм вычисления математического ожидания?

  9. Составить алгоритм поиска минимального элемента массива.

  10. Какие особенности возникают при составлении программ с накапливанием результата?

  11. Что надо брать при поиске минимального элемента в массиве в качестве начального значения?