Массив содержит четное количество элементов. Напишите программу, которая сортирует по возрастанию отдельно элементы первой и второй половин массива. Каждый элемент должен остаться в «своей» половине. Используйте алгоритм быстрой сортировки. Пример: Массив: 5 3 4 2 1 6 3 2 После сортировки: 2 3 4 5 1 2 3 6 ЯЗЫК ПРОГРАММИРОВАНИЯ ПАСКАЛЬ!!!
Приведу пример программы на языке программирования Pascal, которая реализует заданную задачу:
program QuickSortArray; const n = 8; type TArray = array[1..n] of integer; var arr: TArray; procedure QuickSort(var A: TArray; low, high: integer); var i, j, middle, pivot, temp: integer; begin if low < high then begin middle := (low + high) div 2; pivot := A[middle]; A[middle] := A[high]; i := low; j := high; repeat while (A[i] < pivot) do i := i + 1; while (A[j] > pivot) do j := j - 1; if (i <= j) then begin temp := A[i]; A[i] := A[j]; A[j] := temp; i := i + 1; j := j - 1; end; until (i > j); QuickSort(A, low, j); QuickSort(A, i, high); end; end; var i: integer; begin arr := (5, 3, 4, 2, 1, 6, 3, 2); // Сортировка первой половины QuickSort(arr, 1, n div 2); // Сортировка второй половины QuickSort(arr, n div 2 + 1, n); // Вывод отсортированного массива for i := 1 to n do begin write(arr[i], ' '); end; end.
Эта программа сначала отсортирует первую половину массива, а затем вторую половину массива с использованием алгоритма быстрой сортировки. Полученный результат будет выводиться на экран.
Приведу пример программы на языке программирования Pascal, которая реализует заданную задачу:
program QuickSortArray;const
n = 8;
type
TArray = array[1..n] of integer;
var
arr: TArray;
procedure QuickSort(var A: TArray; low, high: integer);
var
i, j, middle, pivot, temp: integer;
begin
if low < high then
begin
middle := (low + high) div 2;
pivot := A[middle];
A[middle] := A[high];
i := low;
j := high;
repeat
while (A[i] < pivot) do
i := i + 1;
while (A[j] > pivot) do
j := j - 1;
if (i <= j) then
begin
temp := A[i];
A[i] := A[j];
A[j] := temp;
i := i + 1;
j := j - 1;
end;
until (i > j);
QuickSort(A, low, j);
QuickSort(A, i, high);
end;
end;
var
i: integer;
begin
arr := (5, 3, 4, 2, 1, 6, 3, 2);
// Сортировка первой половины
QuickSort(arr, 1, n div 2);
// Сортировка второй половины
QuickSort(arr, n div 2 + 1, n);
// Вывод отсортированного массива
for i := 1 to n do
begin
write(arr[i], ' ');
end;
end.
Эта программа сначала отсортирует первую половину массива, а затем вторую половину массива с использованием алгоритма быстрой сортировки. Полученный результат будет выводиться на экран.