Приблизительный вариант быстрой сортировки массива на языке программирования pascal:
var a:array[1..10] of integer; { массив элементов }
n:integer;
procedureQuickSort( L, R : Integer ); { Быстрая сортировка массива A[] }
var i,j,x,y : integer;
begin
i := l; j := r;
x := a[(l+r) div 2];
repeat
while (A[i] < x) do inc(i);
while (x < A[j]) dodec(j);
if ( i <= j ) then
begin
y:=A[i]; a[i]:=a[j]; a[j]:=y;
inc(i); dec(j);
end;
until (i > j);
if (l < j) then QuickSort(l,j);
if (i < r) then QuickSort(i,r);
end;
begin
writeln('введите 10 элементов массива:');
for n:=1 to 10 do readln(a[n]);
QuickSort( 1, 10 ); { на входе: левая и правая граница сортировки }
writeln('после cортировки:');
for n:=1 to 10 do writeln(a[n]);
end.
var a:array[1..10] of integer; { массив элементов }
n:integer;
procedureQuickSort( L, R : Integer ); { Быстрая сортировка массива A[] }
var i,j,x,y : integer;
begin
i := l; j := r;
x := a[(l+r) div 2];
repeat
while (A[i] < x) do inc(i);
while (x < A[j]) dodec(j);
if ( i <= j ) then
begin
y:=A[i]; a[i]:=a[j]; a[j]:=y;
inc(i); dec(j);
end;
until (i > j);
if (l < j) then QuickSort(l,j);
if (i < r) then QuickSort(i,r);
end;
begin
writeln('введите 10 элементов массива:');
for n:=1 to 10 do readln(a[n]);
QuickSort( 1, 10 ); { на входе: левая и правая граница сортировки }
writeln('после cортировки:');
for n:=1 to 10 do writeln(a[n]);
end.
Приблизительный код быстрой сортировки массива на языке программирования С++:
void qsort (int b, int e)
{
int l = b, r = e;
int piv = arr[(l + r) / 2]; // Опорным элементом для примера возьмём средний
while (l <= r)
{
while (arr[l] < piv)
l++;
while (arr[r] > piv)
r--;
if (l <= r) swap (arr[l++], arr[r--]);
}
if (b < r) qsort (b, r);
if (e > l) qsort (l, e);
} /* ----- end of function qsort ----- */
qsort (0, n-1);
void qsort (int b, int e)
{
int l = b, r = e;
int piv = arr[(l + r) / 2]; // Опорным элементом для примера возьмём средний
while (l <= r)
{
while (arr[l] < piv)
l++;
while (arr[r] > piv)
r--;
if (l <= r) swap (arr[l++], arr[r--]);
}
if (b < r) qsort (b, r);
if (e > l) qsort (l, e);
} /* ----- end of function qsort ----- */
qsort (0, n-1);
Комментариев нет:
Отправить комментарий