INFOPedia : PRGSWcode

HomePage :: Categorie :: Indice :: Ultime modifiche :: Ultimi commenti :: Login/Registrazione
La versione più recente è stata modificata il 2007-06-09 14:10:42 da IgnazioC

Aggiunzioni:
n=25;
V[i]:=(random(100)+1);

Procedure CountingSort(var V:VettInteger);
Vett=Array[1..100]of integer;
copia:VettInteger;
b:Vett;
inizializzo il vettore
For i:=1 to 100 do
B[i]:=0;
inc(B[V[i]]);
For i:=2 to 100 do
B[i]:=B[i]+B[i-1];
For i:=n downto 1 do
Copia[B[V[i]]]:=V[i];
dec(B[v[i]]);
V[i]:=copia[i]

Procedure Mergesort(Var V:VettInteger;L,R:integer);
Procedure Merge(var V:VettInteger;L,posmed,R:Integer);
Var
i,j,k:integer;
B:VettInteger;
Begin
i:=L;j:=PosMed+1;k:=L;
While (I<=Posmed) and (j<=R) do
begin
If V[i]<V[j] then
begin
B[k]:=V[i];
inc(i);
end
else
begin
B[k]:=V[j];
inc(j);
end;
inc(k);
end;
while i<=posmed do
begin
B[k]:=V[i];
inc(i);
inc(k);
end;
While j<=r do
begin
B[k]:=V[j];
inc(j);
inc(k);
end;
For k:=l to r do
V[k]:=B[k];
End; {End MERGE}
PosMed:integer;
IF L<R then
PosMed:=(L+R)div 2;
Mergesort(V,L,PosMed);
Mergesort(V,PosMed+1,R);
Merge(V,L,PosMed,R);
V1,V2,v3:VettInteger;
V2:=V1;
V3:=V1;
Writeln('Invio pa ACCUMINCIARI');
Writeln('Ordinamento Mergesort');
Mergesort(V2,1,n);
Print(v2);
Writeln('Ordinamento CountingSort');
CountingSort(v3);
print(v3);


Omissioni:
n=20;
V[i]:=random(100);
V1:VettInteger;




Modificato il 2007-06-09 11:13:33 da IgnazioC

Aggiunzioni:

Torna a Programmazione e Lab.


Omissioni:
--
Torna all'indice




Modificato il 2007-06-09 11:12:37 da IgnazioC

Aggiunzioni:
%%(pascal)
--
Torna all'indice


Omissioni:
%%pascal



La versione più vecchia di questa pagina è stata modificata il 2007-06-09 11:10:59 da IgnazioC []
Vista della pagina:
Questo è un piccolo programmino che racchiude i principali algoritmi di ordinamento.
da sottolineare che i parametri delle varie procedure sarebbero dovuti essere passati per indirizzo, e non per valore come ho fatto io, ma ciò mi è servito per ordinare una copia del vettore, piuttosto che quella "originale", per poter applicare in successione i vari algoritmi senza dover ricreare i vattore disordinato.

pascal

program Ordinamenti;

{$APPTYPE CONSOLE}

uses
  SysUtils;

Const
  n=20;
Type
  VettInteger=Array[1..n]of integer;
//-------------------------------------------
Procedure Print(v:VettInteger);
var
 i:integer;
Begin
For i:=1 to n do
 Write(V[i]:2,' ');
End;
//-------------------------------------------
Procedure Genera(Var V:VettInteger);
var
 i:Integer;
Begin
For i:=1 to n do
 V[i]:=random(100);
end;
//-------------------------------------------
Procedure Scambia(var x,y:Integer);
var
 z:integer;
Begin
 z:=y;
 y:=x;
 x:=z;
End;
//-------------------------------------------
Procedure SelectionSort(V:Vettinteger);
var
i,j:Integer;
Begin
Writeln('Ordinamento ingenuo');
For j:=1 to n-1 do
 begin
 For i:=j+1 to n do
  if V[j]>V[i] then Scambia(V[i],V[j]);
 end;
Print(V);
writeln;
writeln;
End;
//-------------------------------------------
Procedure BubbleSort1(v:VettInteger);
Var
i,j:integer;
Begin
Writeln('Primo Ordinamento Bubblesort');
For j:=1 to n-1 do
 For i:=1 to n-1 do
  If V[i]>V[i+1] then Scambia(V[i],V[i+1]);
Print(v);
Writeln;
Writeln;
End;
//-------------------------------------------
//-------------------------------------------
Procedure BubbleSort2(v:VettInteger);
Var
i,j,m:integer;
Begin
Writeln('Secondo Ordinamento Bubblesort');
m:=n-1;
For j:=1 to n-1 do
 begin
  For i:=1 to m do
   begin
   If V[i]>V[i+1] then Scambia(V[i],V[i+1]);
   end;
  m:=m-1;
  end;
Print(v);
Writeln;
Writeln;
End;
//-------------------------------------------
Procedure bubblesort3(V:Vettinteger);
var
 S:Boolean;
 i,m:Integer;
Begin
Writeln('Terzo ordinamento Bubblesort');
m:=n-1;
Repeat
 s:=false;
 For i:=1 to m do
  If V[i]>V[i+1] then
   begin
   scambia(V[i],V[i+1]);
   s:=true;
   end;
 m:=m-1;
Until s=false;
Print(v);
Writeln;
Writeln;
End;
//-------------------------------------------
Procedure Bubblesort4(V:VettInteger);
var
s:Boolean;
i,p,m:integer;
Begin
s:=False;
m:=n;
Writeln('Quarto ordinamento BubbleSort');
Repeat
s:=False;
 for i:=1 to m-1 do
  IF V[i]>V[i+1] then
   begin
   Scambia(V[i],V[i+1]);
   s:=true;
   p:=i+1;
   end;
  m:=p;
Until S=false;
Print(V);
Writeln;
Writeln;
end;
//-------------------------------------------
Procedure QuickSort(var V:VettInteger;L,R:integer);
Var
pivot:Integer;
i,j:integer;

Begin

i:=L; j:=R;
pivot:=(V[L]+V[R])div 2;
REPEAT
 While V[i]<Pivot do
  inc(i);
 While V[j]>pivot do
  dec(j);
 IF i<=j then
 begin
 Scambia(V[i],V[j]);
 Inc(i);
 Dec(j);
 end;
Until i>=j;
IF L<j then QuickSort(V,l,j);
IF R>i then Quicksort(V,i,r);
End;




Var
  V1:VettInteger;
  i:integer;
begin
randomize;
Writeln('Programma che realizza i vari ordinamenti');
Writeln('Rimepimento del vettore:');
Genera(V1);

Print(V1);
writeln;
writeln;
selectionsort(V1);
Bubblesort1(V1);
Bubblesort2(V1);
Bubblesort3(V1);
Bubblesort4(V1);
Writeln('Ordinamento Quicksort');
QuickSort(V1,1,n);
Print(V1);

readln;
end.
Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by Wikka Wakka Wiki 1.1.6.1
La pagina è stata generata in 0.0635 secondi