Răspuns :
Buna, acesta este algoritmul.
Sa imi spui te rog daca nu intelegi ceva.
PROGRAM Sort(input, output);
CONST
{ Dimensiunea maxima }
MaxElts = 100;
TYPE
{ Tipul elementelor array-ului}
IntArrayType = ARRAY [1..MaxElts] OF Integer;
VAR
{ Variabile de manevra }
i, size: integer;
{ Un array de int-uri }
arr: IntArrayType;
{ Se citesc datele }
PROCEDURE ReadArray(VAR size: Integer; VAR a: IntArrayType);
BEGIN
size := 1;
WHILE NOT eof DO BEGIN
readln(a[size]);
IF NOT eof THEN
size := size + 1
END
END;
Procedure QSort(numbers : IntArrayType; left : Integer; right : Integer);
Var
pivot, l_ptr, r_ptr : Integer;
Begin
l_ptr := left;
r_ptr := right;
pivot := numbers[left];
While (left < right) do
Begin
While ((numbers[right] >= pivot) AND (left < right)) do
right := right - 1;
If (left <> right) Then
Begin
numbers[left] := numbers[right];
left := left + 1;
End;
While ((numbers[left] <= pivot) AND (left < right)) do
left := left + 1;
If (left <> right) Then
Begin
numbers[right] := numbers[left];
right := right - 1;
End;
End;
numbers[left] := pivot;
pivot := left;
left := l_ptr;
right := r_ptr;
If (left < pivot) Then
QSort(numbers, left, pivot-1);
If (right > pivot) Then
QSort(numbers, pivot+1, right);
End;
Procedure QuickSort(numbers :IntArrayType; size : Integer);
Begin
{ Citire }
ReadArray(size, arr);
{Sortare }
QSort(arr, 0, MaxElts-1);
{ Afisare }
FOR i := 1 TO size DO
writeln(arr[i])
End;
Vă mulțumim că ați vizitat site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Dacă aveți întrebări sau nevoie de asistență suplimentară, nu ezitați să ne contactați. Pe curând și nu uitați să ne adăugați la favorite!