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

Линейная сортировка

Program Massiv;

Var A: array [1..25] of real; {описание массива}

i, k, j: integer;

min,S:real;

begin

for i:=1 to 25 do Read(A[i]);

for k:=1 to 25 do

begin

min:=a[k];

for i:=k to 25 do

if a[i] < min then begin min:=A[i]; j:=i end;

S:=A[k];

A[k]:=min;

A[j]:=S

end;

for i:=1 to 25 do Write(A[i]);

end.

Для того, чтобы не терялись значения элементов массива вместо которых ставятся элементы с наименьшим значение, введена переменная S.

Метод сортировки Шелла

program Sort;

Const n=10;

Var a : array[1..n] of integer;

i , j, c, k : integer;

Begin

Randomize;

for i:=1 to n do

begin

a[i]:=random(15)-3; {создание массива в диапазоне [-3;11]}

Write(a[i]:4)

end;

k:=n div 2;

while k>0 do

begin

for i:=n-k downto 1 do

begin

i:=j;

while i<=n-k do

begin

if a[i]>a[i+k] then begin

c:=a[i];

a[i];=a[i+k];

a[i+k]:=c;

end;

i:=i+k;

end;

end;

k:=k div 2

end;

Writeln;

for i:=1 to n do Write(a[i]:4)

End.

Метод прямого обмена (пузырьковый метод)

program Sort ;

Const n=15;

Var a : array[1..n] of integer;

i , j, c: integer;

begin

Randomize;

for i:=1 to n do

begin

a[i]:=random(22); {создание массива в диапазоне [0;21]}

Write(a[i]:8)

end;

Writeln;

for i:=1 to n-1 do

for j:=1 to n-1 do

if a[j]>a[j+1] then begin

c:=a[j];

a[j];=a[j+1];

a[j+1]:=c;

end;

for i:=1 to n do Write(a[i]:8)

end.

Контрольные вопросы

  1. Что такое массив?

  2. Как определить местоположение элемента в массиве?

  3. Что такое индекс? Каким требованиям он должен удовлетворять?

  4. Каким образом задается описание массива? Что в нем указывается?

  5. В каких операциях могут участвовать массивы и какие требования при этом предъявляются?

  6. Каким образом задается обращение к элементу массива?

  7. Почему при описании массива предпочтительнее употреблять константы, а не указывать размеры массива в явном виде?

  8. Что называется главной (побочной) диагональю?

  9. Как произвести вывод двумерного массива в виде матрицы?

  10. Где ошибки (их четыре) в следующей программе?

Program Massiv;

var X : array[1..8]: real;

begin

Read (X);

for i:=1 to 8 do X:=X*2;

Write(X)

end.

  1. Где ошибки (их три) в следующей программе?

Program Massiv;

var X : array[1…n] of real;

begin

Read (n);

for i:=1 to n do X[i]:=random(5);

Write(X[i]) end.

    1. Найдите значение переменной Z при заданных исходных данных 7 4 -3 12 8 4 2 0

Program Summa;

const n=8;

var X : array[1..n] of integer;

Z: integer;

begin

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

z:=z+X[i]

end.