Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Шпоры по МПиПА / Массивы / Сортировка / Сортировка разделением / Pascal / Исходник / quickSort
.pas Program quick_sort;
const
max = 10000;
type myArray = array[0..max] of integer;
var dimension, i : integer;
arr, sortArray : myArray;
procedure sort( var arr : myArray; L, R : integer );
var i, j : integer;
temp, item : integer;
begin
i := L;
j := R;
item := arr[(L + R) div 2];
//write(' L = ');write(L);write(' R = ');write(R);write(' item = ');writeln(item);
repeat
while arr[i] < item do i := i + 1;
while item < arr[j] do j := j - 1;
if i <= j then begin
temp := arr[i];
arr[i] := arr[j];
arr[j] := temp;
i := i + 1;
j := j - 1;
end;
until i >= j;
if L < j then sort( arr, L, j );
if i < R then sort( arr, i, R );
end;
function quickSort( arr : myArray; size : integer ) : myArray;
begin
sort( arr, 0, size - 1 );
quickSort := arr;
end;
begin
writeln('Quick Sort.');
write('Enter array dimension: '); readln( dimension );
write('Enter '); write( dimension ); write(' elements: ');
for i := 0 to dimension-1 do
read(arr[i]);
sortArray := quickSort( arr, dimension );
write('Sorting array: ');
for i := 0 to dimension-1 do begin
write( sortArray[i] ); write(' '); end;
writeln;
writeln('Press "Enter" to continue...');
readln;
readln;
end.
const
max = 10000;
type myArray = array[0..max] of integer;
var dimension, i : integer;
arr, sortArray : myArray;
procedure sort( var arr : myArray; L, R : integer );
var i, j : integer;
temp, item : integer;
begin
i := L;
j := R;
item := arr[(L + R) div 2];
//write(' L = ');write(L);write(' R = ');write(R);write(' item = ');writeln(item);
repeat
while arr[i] < item do i := i + 1;
while item < arr[j] do j := j - 1;
if i <= j then begin
temp := arr[i];
arr[i] := arr[j];
arr[j] := temp;
i := i + 1;
j := j - 1;
end;
until i >= j;
if L < j then sort( arr, L, j );
if i < R then sort( arr, i, R );
end;
function quickSort( arr : myArray; size : integer ) : myArray;
begin
sort( arr, 0, size - 1 );
quickSort := arr;
end;
begin
writeln('Quick Sort.');
write('Enter array dimension: '); readln( dimension );
write('Enter '); write( dimension ); write(' elements: ');
for i := 0 to dimension-1 do
read(arr[i]);
sortArray := quickSort( arr, dimension );
write('Sorting array: ');
for i := 0 to dimension-1 do begin
write( sortArray[i] ); write(' '); end;
writeln;
writeln('Press "Enter" to continue...');
readln;
readln;
end.