SlideShare a Scribd company logo
1 of 5
  QUICKSORT    SAU    SORTAREA RAPIDA ELEV   : Chira Andrada
Fie vectorul a cu n componente nr  î ntregi (sau reale ). Se cere ca vectorul s ă  fie sortat cresc ă tor.   ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Xk,Xk+1,…,Xp Xk
EX: se da sirul   ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],5 12 9 4 10 5 12 9 4 10 5 12 9 4 10 5 4 12 9 10 4 5 9 12 10 4 5 12 10 Rezulta sirul ordonat: 4 5 9 10 12
Rolul variabileleor folosite   ,[object Object],[object Object],[object Object],[object Object],i k j p a v a[i] a[j]
Program sotare_rapida;  type vector = array [1..100 ] of integer;   var  i, n:integer;   a:vector; function imparte  (var a: vector; k,p: integer):integer;   var i,j,v :integer;   begin    i:=k;   j:=p;   v:= a[i];    while  i < j  do begin    while (i < j ) and (v <=  a[j]) do    j := j-1;   a[i]:= a[j];   while (i < j)  and (a[i] <= v) do    i := i+1;   a[j]:= a[i] ;    end;   a[i]:= v;   imparte:= I;   end; procedure quicksort  (var a :vector; k,p:integer)   var m : ineteger;    begin    if k < p then begin    m := imparte (a,k,p);   quicksort(a,k,m-1,p);   quicksort(a,k,m+1,p);   end;   end; BEGIN   write (‘n=’); readln(n);   for i := 1 to n do begin  write (‘a[’,i,’]=’);   readln(a[i]);   end;   quicksort(1,n);   for i:= 1  to n do  writeln (a[i]); END. {va specifica pozita finala a elementului in sir si pozitia se determina cu ajutorul functiei imparte}  {Returneaza pozitia finala a unui element in sirul ordonat}

More Related Content

More from kabaitimea

Perpendicularitate
PerpendicularitatePerpendicularitate
Perpendicularitatekabaitimea
 
10 Decembrie 2008
10 Decembrie 200810 Decembrie 2008
10 Decembrie 2008kabaitimea
 
AlimentaţIa Exogenă
AlimentaţIa ExogenăAlimentaţIa Exogenă
AlimentaţIa Exogenăkabaitimea
 
Aplicatia Calculator
Aplicatia CalculatorAplicatia Calculator
Aplicatia Calculatorkabaitimea
 
Securitate Legislatie
Securitate LegislatieSecuritate Legislatie
Securitate Legislatiekabaitimea
 
Plata Unei Sume Intr Un Numar Minim De Bancnote
Plata Unei Sume Intr Un Numar Minim De BancnotePlata Unei Sume Intr Un Numar Minim De Bancnote
Plata Unei Sume Intr Un Numar Minim De Bancnotekabaitimea
 
Turnurile Din Hanoi
Turnurile Din HanoiTurnurile Din Hanoi
Turnurile Din Hanoikabaitimea
 

More from kabaitimea (9)

Eco (English)
Eco (English)Eco (English)
Eco (English)
 
Perpendicularitate
PerpendicularitatePerpendicularitate
Perpendicularitate
 
10 Decembrie 2008
10 Decembrie 200810 Decembrie 2008
10 Decembrie 2008
 
AlimentaţIa Exogenă
AlimentaţIa ExogenăAlimentaţIa Exogenă
AlimentaţIa Exogenă
 
Windows
WindowsWindows
Windows
 
Aplicatia Calculator
Aplicatia CalculatorAplicatia Calculator
Aplicatia Calculator
 
Securitate Legislatie
Securitate LegislatieSecuritate Legislatie
Securitate Legislatie
 
Plata Unei Sume Intr Un Numar Minim De Bancnote
Plata Unei Sume Intr Un Numar Minim De BancnotePlata Unei Sume Intr Un Numar Minim De Bancnote
Plata Unei Sume Intr Un Numar Minim De Bancnote
 
Turnurile Din Hanoi
Turnurile Din HanoiTurnurile Din Hanoi
Turnurile Din Hanoi
 

Quicksort

  • 1. QUICKSORT SAU SORTAREA RAPIDA ELEV : Chira Andrada
  • 2.
  • 3.
  • 4.
  • 5. Program sotare_rapida; type vector = array [1..100 ] of integer; var i, n:integer; a:vector; function imparte (var a: vector; k,p: integer):integer; var i,j,v :integer; begin i:=k; j:=p; v:= a[i]; while i < j do begin while (i < j ) and (v <= a[j]) do j := j-1; a[i]:= a[j]; while (i < j) and (a[i] <= v) do i := i+1; a[j]:= a[i] ; end; a[i]:= v; imparte:= I; end; procedure quicksort (var a :vector; k,p:integer) var m : ineteger; begin if k < p then begin m := imparte (a,k,p); quicksort(a,k,m-1,p); quicksort(a,k,m+1,p); end; end; BEGIN write (‘n=’); readln(n); for i := 1 to n do begin write (‘a[’,i,’]=’); readln(a[i]); end; quicksort(1,n); for i:= 1 to n do writeln (a[i]); END. {va specifica pozita finala a elementului in sir si pozitia se determina cu ajutorul functiei imparte} {Returneaza pozitia finala a unui element in sirul ordonat}