Быстрая сортировка массива

Приблизительный вариант быстрой сортировки массива на языке программирования 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.


 Приблизительный код быстрой сортировки массива на языке программирования С++:

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);

 

Комментариев нет: