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);
Var i, j: Word;
Str: Boolean;
temp: Integer;
Begin
i := bottom;
j := top;
str := False;
While (i < j) Do
Begin
If (vector[i] > vector[j]) Then
Begin
temp := vector[i];
vector[i] := vector[j];
vector[j] := temp;
str := Not(str);
End; {If}
If (str)
Then i := i + 1
Else j := j – 1;
End; {While}
If (i > 1) And ((i – 1) > bottom)
Then Sort_Hoar(m, bottom, i – 1, vector);
If (j < (m – 1)) And ((j + 1) < top)
Then Sort_Hoar(m, j + 1, top, vector);
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_Hoar(n, 1, 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.
Результат работы программы:
Исходный вектор:
-62 18 -48 46 -44 -58 -95 76 4 -65
Отсортированный вектор:
-95 -65 -62 -58 -48 -44 4 18 46 76
Метод К.Хоара считается одним из самых быстрых методов сортировок.
Дата добавления: 2015-08-08; просмотров: 632;