Metodo de ordenacion por seleccion (selection sort)
pascal:
Program OrdenarSeleccion;
{Leer 10 Enteros. Ordena. Visualiza }
uses CRT,Chuchox;
Const
Limite=10;
Type
{ Lista = Array [1..Limite] of Integer;}
lista= v2;
Var
I, Num : 1..Limite;
A : Lista;
h : integer;
Function PosMayor (Ultimo:Integer; Var Tabla: Lista): Integer;
{Encuentra el indice del elemento mayor en la tabla [1..Ultimo]}
Var
Indice_Max, Indice : 1..Limite;
Begin
Indice_Max := 1;
For Indice := 2 To ultimo Do
If Tabla [Indice] > Tabla [Indice_Max]
Then Indice_Max := Indice;
PosMayor := Indice_Max
End;
PROCEDURE Seleccion (Limi: Integer; Var Tabla :lista);
Var
Aux, J, Mayor,h: Integer;
Begin
h:=1;
For J := Limi downto 2 do
Begin
{Encontrar el elemento mayor de 1..J}
Mayor := PosMayor (j, Tabla);
{Intercambio con el elemento tabla [J]}
Aux := Tabla [Mayor];
Tabla [Mayor] := Tabla [J];
Tabla [J] := Aux;
display (Tabla,h);
h:=h+3;
End;
End;
{programa principal}
Begin
clrscr;
{Writeln('uagua');}
For I := 1 To Limite Do
Begin
A [I] := Random (100);
{ Write (A[I] : 4);}
h:=1;
End;
{Writeln('uagua');}
Seleccion (Limite, A);
For I :=1 To Limite Do
{ Write ( A[I] : 4);}
Writeln;
Repeat Until Keypressed;
End.
{Leer 10 Enteros. Ordena. Visualiza }
uses CRT,Chuchox;
Const
Limite=10;
Type
{ Lista = Array [1..Limite] of Integer;}
lista= v2;
Var
I, Num : 1..Limite;
A : Lista;
h : integer;
Function PosMayor (Ultimo:Integer; Var Tabla: Lista): Integer;
{Encuentra el indice del elemento mayor en la tabla [1..Ultimo]}
Var
Indice_Max, Indice : 1..Limite;
Begin
Indice_Max := 1;
For Indice := 2 To ultimo Do
If Tabla [Indice] > Tabla [Indice_Max]
Then Indice_Max := Indice;
PosMayor := Indice_Max
End;
PROCEDURE Seleccion (Limi: Integer; Var Tabla :lista);
Var
Aux, J, Mayor,h: Integer;
Begin
h:=1;
For J := Limi downto 2 do
Begin
{Encontrar el elemento mayor de 1..J}
Mayor := PosMayor (j, Tabla);
{Intercambio con el elemento tabla [J]}
Aux := Tabla [Mayor];
Tabla [Mayor] := Tabla [J];
Tabla [J] := Aux;
display (Tabla,h);
h:=h+3;
End;
End;
{programa principal}
Begin
clrscr;
{Writeln('uagua');}
For I := 1 To Limite Do
Begin
A [I] := Random (100);
{ Write (A[I] : 4);}
h:=1;
End;
{Writeln('uagua');}
Seleccion (Limite, A);
For I :=1 To Limite Do
{ Write ( A[I] : 4);}
Writeln;
Repeat Until Keypressed;
End.