Лекция: Сортировка выбором.

 

Находится наибольший элемент вмассиве из N элементов (пусть он имеет номер р) и меняется местами с элементом, стоящим на N-м месте, при условии, что N<>p. Из оставшихся (N-1) элементов снова выделяется наибольший и меняется местами с элементом, стоящим на (N-1)-м месте и т. д. Алгоритм заканчивает свою работу, когда элементы, стоящие на 1-м и 2-м местах в массиве, будут упорядочены (для этого понадобится N-1 «проход» алгоритма). Аналогично данный алгоритм можно применять и к наименьшим элементам.

Пример: отсортировать массив А(1..N) по возрастанию.

program sort);

var a: array[1..n] of Real;

var i, j, min, vsp: integer;

begin

for i := 1 to n — 1 do

begin

min:=i;

for j := i+1 to n do

if a[j]<a[min] then min := j;

vsp:=a[i]; a[i]:=a[min]; a[min]:=vsp;

end;

end;

Записи

 

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

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

 

<имя типа> = RECORD <сп.полей> END

 

Здесь <имя типа> — правильный идентификатор;

RECORD, END — зарезервированные слова (запись, конец); <сп.полей> — список полей; представляет собой последовательность разделов записи, между которыми ставится точка с запятой.

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

type

BirthDay = record

day,month: Byte;

year: Word

end;

var

a,b: Birthday;

В этом примере тип BIRTHDAY (день рождения) есть запись с полями DAY, MONTH и YEAR (день, месяц и год); переменные А и В содержат записи типа BIRTHDAY.

Как и в массиве, значения переменных типа записи можно присваивать другим переменным того же типа, например

а := b;

К каждому из компонентов записи можно получить доступ, если использовать составное имя, т.е. указать имя переменной, затем точку и имя поля:

а.day := 27;

b.year := 1939;

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

type

BirthDay = record

day,month: Byte;

year: Word

end;

var

с: record

name: String;

bd: BirthDay

end;

begin

if c.bd.year = 1939 then ...

end.

Чтобы упростить доступ к полям записи, используется оператор присоединения WITH:

 

WITH <переменная> DO <оператор>

 

Здесь WITH, DO — ключевые слова (с, делать);

<переменная> — имя переменной типа запись, за которым, возможно, следует список вложенных полей; <оператор> — любой оператор Турбо Паскаля.

Например:

with c.bd do month := 9; Это эквивалентно with с do with bd do month := 9;

или

with c,bd do month := 9;

или

c.bd.month := 9;

 


еще рефераты
Еще работы по информатике