El algoritmo ordena una lista de elementos mediante intercambios adyacentes en múltiples pasadas. Utiliza ciclos anidados para recorrer la lista e intercambiar elementos si el elemento actual es mayor que el siguiente, ordenándolos de menor a mayor.
1. Su Caracteristica principal es intercambio de pares de elementos
adyecentes.
Los Parametros Necesarios:
Lista(el array que contiene la lista de elementos a ordenar.
Numero de elementos que queremos ordenar.
Para el Procedimiento se necesita algunas variables, como por ejemplo:
nt: se indicara el numero de pasada.
i: indice para recorrer el array.
cam: para realizar el intercambio de los elementos del array
2. for nt := 1 to 4 do {Ciclo para hacer los pases, que tiene almacenado en el array, ciclo para la salidas de arregle}
begin
for i:=nt+1 to 4 do {Ciclo para hacer los cambios, ahora i tiene el valor de segundo de array}
begin
if nota[nt] > nota[i] then {de acuerdo al numero de ciclo nt con el array es mayor que el segundo dato del
arregle del ciclo nt+1, entoces, hacen esta condicion o no}
begin
cam:=nota[nt];{En la variable cabio almacena el valor de array del del numero del ciclo nt}
nota[nt]:=nota[i];{Ahora el dato del array ciclo nt tiene el valor de la seguiente que el nt+1}
nota[i]:= cam;{Al al segundo dato del array ponemos el primer dato que habia alma
cenado en la variable cam}
end;
end;
3. Program notaprogra;
Uses wincrt;
Type
notas=array [1..4] of integer;{Arreglo de lista}
var
nota:notas;{Variables para almacenar datos con arreglo}
nt,i,cam:integer;{Variables para los ciclo y cambios}
Begin
For nt:=1 to 4 do{Cliclo para almacenar datos}
begin
Write('Ingrese La Nota:');
Readln(nota[nt]);{Ingresando los datos con siclo repetitivo, con el arreglo}
end;
clrscr;{Limpiamos la pantalla para mostrar los datos almacenados}
For nt:=1 to 4 do{Ciclo para mostrar los datos almacenados}
Writeln('Nota',nt,':',nota[nt]);{Mostrando datos almacenados en orden al
ciclo, con arreglo}
Clrscr; {Limpiando la Pantalla para Mostrar los datos ordenados}
writeln('');
writeln('LA ORDEN ASCENDENTE DE LOS DATOS');
4. writeln('__________________________________________________');
for nt := 1 to 4 do{Ciclo para hacer los pases, que tiene almacenado en el array, ciclo
para la salidas}
begin
for i:=nt+1 to 4 do{Ciclo para hacer los cambios, ahora i tiene el valor de segundo
de array}
begin
if nota[nt] > nota[i] then {de acuerdo al numero de ciclo nt con el array es mayor
que el segundo dato del arregle del ciclo nt+1, entoces, hacen esta condicion o no}
begin
cam:=nota[nt];{En la variable cabio almacena el valor de array del del numero del
ciclo nt}
nota[nt]:=nota[i];{Ahora el dato del array ciclo nt tiene el valor de la seguiente
que el nt+1}
nota[i]:= cam;{Al al segundo dato del array ponemos el primer dato que habia alma
cenado en la variable cam}
end
end;
writeln('Nota: ',nota[nt]){todavia estando dentro del ciclo nt damos la salida de datos,
array, con el orden del ciclo va escribiendo}
end;
End.
5. Un ciclo de pases para datos almacenados con array.
Un ciclo de cuatro para cambio s
Intercabio de elementos en cada ciclo de cambios si es necesario y en
cada ciclo de pase tiene su ciclo de cambio.
En cada ciclo de cambio tiene dos elementos para cambio si es necesario
Los Elementos, por Ejemplo:
nota[nt]
nota [i]=nota[nt+1]
Una vez termina el Ciclo de Cambio regresa a ciclo de pases y entra otra
vez al ciclo de cambio con la misma orden de ciclo, al terminar el ciclo
de pases termina ordenada los datos de array.
6. for i:=nt+1 to 4 do
begin
if nota[nt] > nota[i] then
begin
cam:=nota[nt];
nota[nt]:=nota[i];
nota[i]:= cam;
end
end;
nota[nt] nota[i]
1 2 3 4
nota[nt] nota[i]=nt+1 cam
7. for i:=nt+1 to 4 do
begin
if nota[nt] > nota[i] then
begin
cam:=nota[nt];
nota[nt]:=nota[i];
nota[i]:= cam;
end
end;
nota[nt] nota[i]
1 2 3 4
nota[nt] nota[i]=nt+1 cam
8. for i:=nt+1 to 4 do
begin
if nota[nt] > nota[i] then
begin
cam:=nota[nt];
nota[nt]:=nota[i];
nota[i]:= cam;
end
end;
nota[nt] nota[i]
1 2 3 4
nota[nt] nota[i]=nt+1 cam
9. El Ciclo de Pases Continua
En cada Ciclo pase Tiene Su Ciclo de Cambios
10. for i:=nt+1 to 4 do
begin
if nota[nt] > nota[i] then
begin
cam:=nota[nt];
nota[nt]:=nota[i];
nota[i]:= cam;
end
end;
nota[nt] nota[i]
1 2 3 4
nota[nt] nota[i]=nt+1 cam
11. for i:=nt+1 to 4 do
begin
if nota[nt] > nota[i] then
begin
cam:=nota[nt];
nota[nt]:=nota[i];
nota[i]:= cam;
end
end;
nota[nt] nota[i]
1 2 3 4
nota[nt] nota[i]=nt+1 cam
12. for i:=nt+1 to 4 do
begin
if nota[nt] > nota[i] then
begin
cam:=nota[nt];
nota[nt]:=nota[i];
nota[i]:= cam;
end
end;
nota[nt] nota[i]
1 2 3 4
nota[nt] nota[i]=nt+1 cam
13. El Ciclo de pase Continua hasta terminar su la Orden
14. for i:=nt+1 to 4 do
begin
if nota[nt] > nota[i] then
begin
cam:=nota[nt];
nota[nt]:=nota[i];
nota[i]:= cam;
end
end;
nota[nt] nota[i]
1 2 3 4
nota[nt] nota[i]=nt+1 cam
15. for i:=nt+1 to 4 do
begin
if nota[nt] > nota[i] then
begin
cam:=nota[nt];
nota[nt]:=nota[i];
nota[i]:= cam;
end
end;
nota[nt] nota[i]
1 2 3 4
nota[nt] nota[i]=nt+1 cam
16. for i:=nt+1 to 4 do
begin
if nota[nt] > nota[i] then
begin
cam:=nota[nt];
nota[nt]:=nota[i];
nota[i]:= cam;
end
end;
nota[nt] nota[i]
1 2 3 4
nota[nt] nota[i]=nt+1 cam
17. Parece que no es necesario continuar con el ordenamiento
pero es por los datos, si los datos es mas my mucho mas
variados los ciclos de ordenamiento es necesario suficiente
como esta el orden del cilclo para repetir.
Continuamos con el Ciclo de pases.
18. for i:=nt+1 to 4 do
begin
if nota[nt] > nota[i] then
begin
cam:=nota[nt];
nota[nt]:=nota[i];
nota[i]:= cam;
end
end;
nota[nt] nota[i]
1 2 3 4
nota[nt] nota[i]=nt+1 cam
19. for i:=nt+1 to 4 do
begin
if nota[nt] > nota[i] then
begin
cam:=nota[nt];
nota[nt]:=nota[i];
nota[i]:= cam;
end
end;
nota[nt] nota[i]
1 2 3 4
nota[nt] nota[i]=nt+1 cam
20. for i:=nt+1 to 4 do
begin
if nota[nt] > nota[i] then
begin
cam:=nota[nt];
nota[nt]:=nota[i];
nota[i]:= cam;
end
end;
nota[nt] nota[i]
1 2 3 4
nota[nt] nota[i]=nt+1 cam