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

28. Сортировка методом вставок(включения).

Элементы просматриваются по одному и каждый новый элемент вставляется в подходящее место среди ранее упорядоченных. Аналогичным образом игроки упорядочивают свои карты после раздачи.

Принцип метода.

Массив разделяется на 2 части – отсортированную и не отсортированную.

Элементы из не отсортированной части поочерёдно выбираются и вставляются в отсортированную часть. Так чтобы не нарушать в ней упорядоченности.

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

  1. Взятие очередного и-го элемента и сохранение его копии в дополнительной переменной.

  2. Поиск позиции «ж» в отсортированной части массива в которой присуттвие взятого элемента не нарушит упорядоченности элементов.

  3. Сдвиг элементов массива от «и-1» до «ж» вправо, чтобы освободить найденную «ж-ю» позицию вставки.

  4. Вставка взятого элемента в «ж-ю» позицию из дополнительной переменной.

Program sort_ins;

Const n=10;

Type vector=array[1..10] of real;

Var

Vec:vector;

Temp:real;

I, j ,k:integer;

Begin

{vvod vec}

For i:=2 to n do

Begin

Temp:=vec[i];

J:=1;

While (temp>vec[j]) and (j<=i-1) do

J:=j+1;

For k:=i-1 downto j do

Vec[k+1]:=vec[k];

Vec[j]:=temp;

End;

{pechat vec}

End.

29. Сортировка методом выбора.

Суть метода сортировки по возрастанию такова:

  1. Массив имеет 2 части: упорядоченную и неупорядоченную.

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

  3. В неупорядоченной части массива ищется минимальный элемент и его индекс.

  4. Обмен значений найденного минимального элемента с последним элементом в упорядоченной части.

  5. Граница упорядоченной части сдвигается вправо на 1 элемент и добавочный элемент в упорядоченной части подлежит сортировке и т.д. до тех пор пока упорядоченная часть массива не будет составлять (н-1) элемент массива.

Program srot_choose;

Const n=10;

Type vector=array[1..10] of real;

Var

Vec:vector;

Min:real;

I,j,imin:integer;

Begin

{vvod vec}

For i:=1 to n-1 do

Begin

Min:=vec[i];

Imin:=I;

For j:=i+1 to n do

Begin

If vec[j]<min

Then

Begin

Min:=vec[j];

Imin:=j;

End;

End;

If min<vec[i]

Then

Begin

Vec[imin]:=vec[i];

vec[i]:=min;

end;

end;

{pechat}

End.

30. Индексная сортировка

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

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

Изначально индексный массив получается упорядочиванием по номерам строк, а по ключевому полю неизвестно, затем сортируется вспомогательный массив по ключевому полю и переставляется в записи целиком вместе с номерами строк. В результате индексный массив становится упорядоченным по ключевому полю, а по номерам строк как получится, исходный массив записей при этом останется без изменения. Для просмотра данных исходного массива в отсортированном порядке используется упорядоченный индексный массив. Индексный массив определяет порядок исходного массива. Идёт цикл по индексному массиву, берётся значение очередного индекса и печатается элемент основного массива с индексом, взятым из этого индексного массива. Таким образом осуществляется вывод исходного массива в порядке заданном номерами строк в отсортированном индексном массиве. Собственно сортировка индексного массива осуществляется любым способом.

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

Недостатки очевидны: большие затраты памяти и времени на сортировки.

Индексные массивы занимаю мало места во время работы хранятся в оперативной памяти и после изменения основного массива легко переупорядочиваются.

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