Program Primer_4;
Uses CRT;
Const n = 10; размер массива
m_min = -150; диапазон значений
m_max = 150; элементов массива
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_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:
Дата добавления: 2015-08-08; просмотров: 683;