Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Задания для самостоятельного выполнения лабораторной работы 13.
1 Напишите программу, которая вводит с клавиатуры 20 реальных чисел, и организовывает их хранение в массиве. После этого определяет сумму элементов, значение которых больше среднего арифметического элементов массива.
2 Напишите программу, которая вводит с клавиатуры 15 реальных чисел, организовывает их хранение в массиве и определяет разность между максимальным и минимальным элементом массива.
3 Напишите программу, которая вводит с клавиатуры 15 реальных чисел, организовывает их хранение в массиве и определяет индексы (номера) элементов массива, значение которых равно значению первого элемента массива. Если такого элемента нет, вывести соответствующее сообщение на экран.
4 Напишите программу, которая вводит с клавиатуры 10 реальных чисел, и организовывает их хранение в массиве. После этого массив пересортировывается по закону: первый элемент меняется с последним, второй с предпоследним и т.д.
5 Напишите программу, которая вводит с клавиатуры 10 целых чисел, организовывает их хранение в массиве и определяет количество чётных и количество нечётных элементов в массиве.
6 Напишите программу, которая вводит с клавиатуры 30 реальных чисел и определяет среднее арифметическое первых десяти элементов, вторых десяти и последних десяти. После этого определяется максимальное и минимальное среднее арифметическое и выводится сообщение.
7 Дан массив, состоящий из 10 символов. Определить и вывести на экран индексы символов равных первому символу.
8 Дан массив, состоящий из 10 символов. Организовать массив целых чисел и заполнить его номерами символов исходного массива. Вывести содержимое массива на экран.
Лабораторная работа 14. Упорядочивание (сортировка) массива
В большинстве случаев, массивы применяются для хранения большого количества однотипной информации, создания и организации баз и банков данных и т.д. Во многих случаях номер (индекс) элемента в массиве не играет большой роли. Важно именно его значение, т.е. сама информация. Базы и банки данных, в свою очередь, необходимы не только для того, чтобы "складывать" в них информацию, но и для того, чтобы в любой момент была возможность удобного и быстрого доступа к ней. В обычном "неотсортированном" массиве информацию найти можно, но только уже известным Вам способом последовательного перебора-просмотра всех его элементов, до тех пор, пока нужный элемент не будет обнаружен. Этот самый простой метод обладает только одним, но очень существенным недостатком - на поиск одного элемента уходит много времени. Все остальные методы поиска информации намного эффективнее, быстрее, но применяются только в упорядоченных, отсортированных массивах. Поэтому часто возникает задача об упорядочивании массива.
Рассмотрим простой случай такой задачи: дан числовой массив xl, х2, ... хn, элементы которого попарно различны; требуется переставить элементы массива так, чтобы после перестановки они были упорядочены в порядке возрастания: xl < х2 < ... < хn.
Существует несколько алгоритмов решения этой задачи. Мы рассмотрим два наиболее популярных.
Алгоритм сортировки выбором
Очевидно, что первое место в массиве должен занять минимальный элемент массива, второе - наименьший из всех остальных, третий - наименьший из оставшихся и т.д. Для этого необходимо выполнить следующую последовательность действий: Определить минимальный элемент массива; Поменять его местами с первым элементом; Определить минимальный элемент среди оставшихся; Поменять его местами со вторым элементом и т.д.; Эта последовательность действий должна выполняться до тех пор, пока не будет определён последний минимальный элемент.
Всю операцию по упорядочиванию массива можно разбить на более простые задачи.
Первая - поиск минимального элемента. Предлагаемый фрагмент программы напомнит Вам, как это делается.
min:=m[l]; {допустим, что 1-й элемент - минимален} t:=l; {и его номер =1} FOR i:=l ТО 30 DO if m[i]<m[t] then t:=j; {условие для определение минимума} buf:=m[t]; {замена} m[t]:=m[i]; m[i]:=buf; END;
Описанный метод сортировки массивов можно применять как для сортировки массивов по возрастанию, так и для сортировки массивов по убыванию. Для этого просто необходимо определять не минимальный элемент массива, а максимальный. В тексте программы это выражается заменой в некоторых местах знака "<" на знак ">".
Алгоритм пузырьковой сортировки
Алгоритм так называемой "пузырьковой" сортировки более оригинален и в большинстве случаев более эффективен. При использовании этого алгоритма весь массив просматривается несколько раз подряд. При каждом таком просмотре сравниваются последовательно только соседние элементы массива: сначала первый со вторым, потом второй с третьим, и в конце предпоследний с последним. Если при сравнении окажется, что предыдущий элемент больше следующего, они меняются местами описанным выше способом. Так в результате одного последовательного просмотра элементы, значение которых больше, "всплывают" образно говоря на поверхность, т.е. ближе к концу массива. Если провести такой последовательный просмотр массива несколько раз, то "тяжёлые" элементы окончательно "всплывут" и массив окажется отсортированным. Остаётся нерешённым ещё один вопрос. Сколько раз необходимо выполнять такой просмотр? Ведь может оказаться, что и одного просмотра будет достаточно. Столько, сколько нужно для полной сортировки, т.е. пока при просмотре элементы не будут меняться местами. Для этого удобно организовать логическую переменную ind, и присваивать ей значение ложь в случае, если замена происходила хотя бы один раз. Если значением этой переменной останется истина, то просмотры необходимо прекратить.
Предлагаемый Вам ниже фрагмент программы реализован на основе метода пузырьковой сортировки. Он выполняет полную сортировку массива состоящего из 40 элементов.
REPEAT ind:=true; {предположим, что массив уже отсортирован} FOR i:=l ТО 39 DO {цикл для организации просмотра} if m[i]>m[i+l] then {сравнение двух соседних элементов} begin buf:=m[i]; {меняем соседние элементы местами} m[i]:=m[i+l]; m[i+l]:=buf; ind:=false; {как оказалось, массив неотсортирован} end; UNTIL ind; {выполняем просмотры пока ind=false}
Контрольные вопросы.
1 Опишите идею сортировки массива методом выбора и последовательность действий для его реализации на языке Turbo Pascal. 2 Опишите идею сортировки массива "пузырьковым" методом и последовательность действий для его реализации на языке Turbo Pascal.
|
||
Последнее изменение этой страницы: 2018-04-12; просмотров: 204. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |