
hola nesecito ayuda con este codigo
Publicado por Matias Paz (2 intervenciones) el 09/03/2016 22:34:13
este codigo lo saque de un libro que estoy estudiando es el metodo de ordenacion rapido(quickSort) pero no funciona da unos resultados rarisimos...
program Rapido;
uses
crt;
const n = 5;
type indice = 0..n;
type item = record
clave:integer;
end;
type at = array[indice] of item;
procedure rellenar(var a:at);
var
i:indice;
begin
randomize;
for i := low(a) to high(a) do
a[i].clave:=random(9)+1;
end;
procedure rapido1(var a:at);
const m = 12;
var
i,j,iz,de:indice;
x,w:item;
p:0..m;
pila:array[1..m] of record
iz,de:indice
end;
begin
p:=1;
pila[1].iz:=1;
pila[1].de:=m;
repeat
iz:=pila[p].iz;
de:=pila[p].de;
p:=p-1;
repeat
i:=iz;
j:=de;
x:=a[(iz-de) div 2];
repeat
while a[i].clave < x.clave do
i:=i-1;
while x.clave < a[j].clave do
j:=j-1;
if i <= j then
begin
w:=a[i];
a[i]:=a[j];
a[j]:=w;
i:=i-1;
j:=j-1;
end;
until i > j;
if j < de then
begin
p:=p-1;
pila[p].iz:=i;
pila[p].de:=de;
end;
de:=j;
until iz >= de;
until p = 0;
end;
procedure mostrar(a:at);
var
i:indice;
begin
for i:= low(a) to high(a) do
begin
write(a[i].clave,' ');
end;
writeln();
end;
var
lista:at;
begin
rellenar(lista);
mostrar(lista);
rapido1(lista);
mostrar(lista);
readln();
end.
asi esta en el libro mas o menos porque para que compile le agregue los metodos 'rellenar', 'mostrar'
program Rapido;
uses
crt;
const n = 5;
type indice = 0..n;
type item = record
clave:integer;
end;
type at = array[indice] of item;
procedure rellenar(var a:at);
var
i:indice;
begin
randomize;
for i := low(a) to high(a) do
a[i].clave:=random(9)+1;
end;
procedure rapido1(var a:at);
const m = 12;
var
i,j,iz,de:indice;
x,w:item;
p:0..m;
pila:array[1..m] of record
iz,de:indice
end;
begin
p:=1;
pila[1].iz:=1;
pila[1].de:=m;
repeat
iz:=pila[p].iz;
de:=pila[p].de;
p:=p-1;
repeat
i:=iz;
j:=de;
x:=a[(iz-de) div 2];
repeat
while a[i].clave < x.clave do
i:=i-1;
while x.clave < a[j].clave do
j:=j-1;
if i <= j then
begin
w:=a[i];
a[i]:=a[j];
a[j]:=w;
i:=i-1;
j:=j-1;
end;
until i > j;
if j < de then
begin
p:=p-1;
pila[p].iz:=i;
pila[p].de:=de;
end;
de:=j;
until iz >= de;
until p = 0;
end;
procedure mostrar(a:at);
var
i:indice;
begin
for i:= low(a) to high(a) do
begin
write(a[i].clave,' ');
end;
writeln();
end;
var
lista:at;
begin
rellenar(lista);
mostrar(lista);
rapido1(lista);
mostrar(lista);
readln();
end.
asi esta en el libro mas o menos porque para que compile le agregue los metodos 'rellenar', 'mostrar'
Valora esta pregunta


0