Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lec_20_02_13.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
64 Кб
Скачать

Линейный поиск в массивах данных

В задачах на линейный поиск требуется найти в массиве данных элемент, группу элементов (или фрагмент массива), которая отвечает заданным требованиям; как правило, нет необходимости сортировать массив или выделять дополнительные рабочие массивы того же порядка, что и заданный.

Способы сортировки в массивах данных

Сортировкой информационной структуры (массива, списка, файла) называется преобразование исходной структуры путем перестановки ее элементов для достижения упорядоченности по заданному признаку порядка.

Признаки порядка для упорядочения массива А(n):

по возрастанию, если для любого i = 2, 3, …, n ai > ai-1

по неубыванию, если для любого i = 2, 3, …, n ai ai-1

по убыванию, если для любого i = 2, 3, …, n ai < ai-1

по невозрастанию, если для любого i = 2, 3, …, n ai ai-1

1. Пузырьковая сортировка (попарные перестановки).

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

2. Сортировка выбором.

При сортировке выбором каждый элемент меняется местами с минимальным или максимальным (в зависимости от признака порядка), среди следующих за ним элементами.

3. Сортировка простыми вставками.

Чтобы упорядочить массив A(n), используя сортировку простыми вставками, необходимо для i = 2, 3, …, n каждый элемент ai вставлять в нужное место среди упорядоченных ранее элементов a1, a2, …, ai-1, раздвигая их за счет удаления ai.

Некоторые рекомендации при работе с массивом

  • При объявлении массивов размерность задается константами, поэтому следует объявлять наиболее разумные размерности, затем вводить переменные размерности и циклы организовывать с их использованием.

  • При обработке массивов рекомендуется использовать вывод на экран всего введенного массива в наглядной форме для визуального контроля правильности ввода и демонстрации соответствия результатов введенным данным: элементы одномерного массива выводятся в строку через пробел; элементы двумерного массива выводятся в виде матрицы (элементы строк выводятся через пробел).

  • Следует максимально ограничивать выделение дополнительных (рабочих) массивов той же размерности, что и обрабатываемые, а также искать эффективные по трудоемкости алгоритмы.

  • В задачах на анализ или поиск в заданном массиве не следует искажать массив в своих целях.

  • Если требуется найти фрагмент массива, обладающий каким-либо свойством (цепочку элементов), то следует в качестве результата показать не только сам фрагмент, но и его местоположение (индексы первого и последнего элементов фрагмента) в массиве.

  • В задачах на сортировку одномерных массивов следует наглядно показать, как изменился порядок следования элементов отсортированного массива по сравнению с исходным массивом, для чего допускается использование дополнительного массива индексов, который формируется при вводе исходного массива.

Запись как статическая структура данных

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

В отличие от массивов компоненты записи (поля) могут иметь разные типы, и доступ к ним осуществляется не по индексу, а по имени поля.

Структура объявления типа:

type

<имя_типа> = record

<список_полей>;

end;

Структура объявления переменной:

var

<имя_переменной>: record

<список_полей>;

end;

Например:

type

Person = record

Name: string[15];

Address: string[20];

end;

Запись можно использовать в качестве отдельной переменной, для чего соответствующая переменная должна иметь тип, который присвоен описанию записи.

После объявления

var

A, B: Person;

переменные A, B будут содержать записи типа Person.

Обращение к отдельным полям записи

A.Address:=’СПб, ул.Фрунзе, д.12, кв.127’;

B.Name:=’Миронов А.В.’;

Вложенные поля записи

Для использования вложенных полей записи необходимо продолжить уточнение:

type

Birthday=record

Day, Month: Byte;

Year: String[4];

end;

var

Rec: record

Name: String[15];

Birth: Birthday;

end;

Тогда

Rec.Birth.Year=’1982’;

Массив записей используется для объединения записей.

Например, чтобы использовать данные типа Person, объявленного ранее, необходимо объявить сами данные. Одним из вариантов использования отдельных записей является объединение их в массив:

var

Persons : array[1..30] of Person;

Объявления типа Person и переменной Persons можно объединить в виде объявления массива записей:

var

Persons : array[1..30] of record

Name: string[15];

Address: string[20];

end;

Доступ к полям отдельной записи:

Persons[1]. Name:=’Миронов’;

Persons[2]. Adress:='Москва, ул.Смоленская-Сенная, д.27, кв.46’;

Оператор присоединения используется для упрощения доступа к полям записи.

Структура оператора:

with <переменная_типа_запись> do <оператор>;

Например, используя предыдущие объявления типа Birthday и переменной Rec, можно заполнить поле Month:

with Rec.Birth do Month:=10;

Следующие записи оператора присоединения будут эквивалентны предыдущей:

with Rec do

with Birth do Month:=10;

или

Rec.Birth.Month:=10;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]