Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Паскаль ИНФОРМАТИКА.doc
Скачиваний:
221
Добавлен:
09.04.2015
Размер:
4.57 Mб
Скачать

Пример. Сортировка обменом по возрастанию массива a из n целых чисел.

Рrogram Sort_Obmen;

var а:array[1..100] of integer;

n,i,k,x : integer;

begin write('количество элементов массива ');

read(n);

for i:=1 to n do read([i]);

for k:=n-1 downto 1 do {количество сравниваемых пар}

for i:=1 to k do if a[i]>a[i+1] then {меняем местами соседние элементы}

begin

x:=a[i];

a[i]:=a[i+1];

a[i+1]:=x;

end;

for i:=1 to n do write(a[i],' '); {упорядоченный массив}

end.

Наряду с сортировкой методом пузырька, существуют и некоторые другие, более эффективные методы сортировки: быстрая сортировка, метод Шелла, сортировка вставками... Однако рассмотренный алгоритм наиболее прост в реализации и логичен.

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

Имя фала: FastSort.pas

Procedure FastSort(Var aa:Massive);

Var ii,kk,nn:byte;

Begin

nn:=n;

Repeat

For ii:=1 to nn-1 Do Begin

kk:=0

If (aa[ii]>aa[ii+1]) Then Begin

Swap (aa[ii],a[ii+1]);

Inc(kk);

End;

End;

Dec(nn);

Until(kk=0);

End;

В то время, как при сортировке предыдущем методом для массива из 10 элементов понадобится 9 проходов, для данного алгоритма это число может уменьшиться. К примеру, массив из значений (1,-3,7,-10,11,4,-6,2,5,-4) будет отсортирован за 8 проходов, а массив (1,4,3,2,4,5,6,7,10,11) – всего за 1.

Следуя похожей, логике отсортируем массив по возрастанию:

Имя фала: Sort_Inc.pas

Procedure Sort_Inc(Var aa:Massive);

Var ii,kk:byte;

Begin

For kk:=1 to n-1 Do Begin

For ii:=1 to n-kk Do Begin

If (aa[ii]>aa[ii+1]) Then Begin

Swap (aa[ii],a[ii+1]);

End;

End;

End;

End;

Обработка двумерных массивов

Основные принципы ввода двумерных массивов во многом схожи с принципами ввода одномерных. При его описании можно ссылать на введенные как константы число строк матрицы MиN, например

Const m=3; n=5;

Type Matrix=array[1..m,1..n] of Real;

Var a,b,c,d: Matrix;

e: array [1..m,1..n] of Byte;

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

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

Литература Основная литература

  1. Ахметов К.С. Курс молодого бойца. Изд. 5-е. М., Компьютер-Пресс,1998.

  2. Фигурнов В.Э. IBM PC для пользователя. Изд. 7-е. М., Инфра-М, 1997, и 1999.

  3. Александр Левин Самоучитель Работы на компьютере 8-ое издание Раздел «из чего состоит компьютер." – Питер, 2004 г.

  4. Электронное методическое пособие МГАПИ 2005 г.

  5. Алексеев Е.Р., Чеснокова О.В., Павлыш в.Р., Славинская Л.Ф. Турбо Паскаль 7.0 2-ое издание – NT Press, М., 2006 г.

  6. Коротаев Д.Г. TURBO-PASCAL в примерах и задачах. Учебное пособие МГАПИ, М, 2000 г.

  7. Программирование на языке Паскаль Задачник. Под редакцией О.Ф.Усковой – Питер, 2003 г.

  8. Фаронов В.В. Учебное пособие Turbo-Pascal- Питер, 2007.