Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Паскалю.doc
Скачиваний:
61
Добавлен:
04.06.2015
Размер:
7.62 Mб
Скачать

Var I: Word;

a : TVector;

out_sort: Text; файловая переменная

Procedure Init(m: Word; elem_min, elem_max: Integer; Var vector: TVector);

Var I: Word;

Begin

Randomize; запуск генератора случайных чисел

For i:=1 To m Do задание элементов массива случайными числами в диапазоне от elem_min до elem_max

vector[i]:=elem_max - Random(elem_max - elem_min +1);

End;

Procedure Sort_vstavka(m: Word; Var vector: TVector);

Var I, j, k: Word;

temp: Integer;

Begin

For i := 2 To m Do

Begin

temp := vector[i];

j := i – 1;

k := 1;

While (j > 0) Do

If (vector[i] > vector[j]) Then

Begin

k := j + 1;

j := 0;

End

Else j := j – 1;

For j := i DownTo k + 1 Do

vector[j] := vector[j - 1];

vector[k] := temp;

End;

End;

Begin

ClrScr;

Assign(out_sort,’d:\User\out_sort.txt’);

ReWrite(out_sort); открытие текстового файла для записи

Init(n, m_min, m_max, a); инициализация массива

Writeln(out_sort, ‘Исходный вектор:’);

For i:=1 To n Do

Write(out_sort, a[i]:5);

WriteLn(out_sort);

Sort_vstavka(n, a); сортировка элементов массива

Writeln(out_sort, ‘Отсортированный вектор:’);

For i:=1 To n Do

Write(out_sort, a[i]:5);

WriteLn(out_sort);

Close(out_sort); закрытие текстового файла

ReadLn;

End.

Результат работы программы:

Исходный вектор:

115 -45 20 -39 91 75 44 138 -72 -63

Отсортированный вектор:

-72 -63 -45 -39 20 44 75 91 115 138

5.Отсортировать элементы массиваметодом быстрой сортировки К.Хоара:сравниваются элементы aiиaj, причемi = 1, j = n. Еслиai < aj, то эти элементы уже отсортированы по возрастанию, поэтому значениеправогоиндексауменьшаетсяна единицу, и алгоритм повторяется. Еслиai > aj, то они меняются местами, останавливаетсяправыйиндекс, и начинает увеличиватьсялевый. Обмен значениями с изменением направления движения после каждого обмена продолжается до тех пор, пока левый и правый индексы не встретятся друг с другом:i = j. В этом случае элементaiбудет стоять на своем месте в массиве: слева от него стоят элементы меньше его, а справа – больше. После этого алгоритм рекурсивно повторяется для левой и правой частей массива. Результаты сохранить в текстовом файлеout_sort.txt:

Program Primer_6;

Uses CRT;

Const n = 10; размер массива

m_min = -100; диапазон значений

m_max = 100; элементов массива

Type TVector = Array [1..n] Of Integer;

Var I: Word;

a : TVector;

out_sort: Text; файловая переменная

Procedure Init(m: Word; elem_min, elem_max: Integer; Var vector: TVector);

Var I: Word;

Begin

Randomize; запуск генератора случайных чисел

For i:=1 To m Do задание элементов массива случайными числами в диапазоне от elem_min до elem_max

vector[i]:=elem_max - Random(elem_max - elem_min +1);

End;

Procedure Sort_Hoar(m, bottom, top: Word; Var vector: TVector);