Quicksort

Soy un chico de Costa Rica, estudio Programación de Sistemas, necesito con urgencia el código del método de ordenación shell, implementado en listas, "no en arrays", si alguien lo tuviera a mano, me lo puede enviar a [email protected].

1 respuesta

Respuesta
1
Suponiendo que tienes una declaración de listas así:
Type
TipoLista = ^TipoNodo;
TipoNodo = record
info: integer;
ant, sig: tipoLista;
end;
Sea la lista simple o doblemente enlazada es indiferente para este
método. El método seria el siguiente:
Procedure Shell(var l: TipoLista);
var
izq, der, i, intervalo, n: integer;
begin
n:= Total(l);
intervalo:= n div 2;
while intervalo > 0 do
begin
for i:= (intervalo+1) to n do
begin
izq:= i - intervalo;
while izq > 0 do
begin
der:= izq + intervalo;
if Info(l, izq) <= Info(l, der) then izq:= 0
else Intercambiar(l, izq, der);
izq:= izq - intervalo;
end;
end;
intervalo:= intervalo div 2;
end;
end;
Los modulos total, info e intercambiar serían asi:
Function Total(l: tipoLista): integer;
var
ptr: tipoLista;
t: integer;
begin
ptr:= l;
t:= 0;
while ptr <> nil do
begin
t:= t + 1;
ptr:= ptr^.sig;
end;
Total:= t;
end;
Function Info(l: TipoLista; posicion: integer): integer;
var
ptr: tipoLista;
i: integer;
begin
ptr:= l;
for i:= 1 to (posicion-1) do
ptr:= ptr^.sig;
Info:= ptr^.info;
end;
Procedure Intercambiar(var l: tipoLista; izq, der: integer);
var
i, aux: integer;
ptr, ptraux: tipolista;
begin
ptr:= l;
for i:= 1 to (der-1) do
begin
if i = izq then ptraux:= ptr;
ptr:= ptr^.sig;
end;
aux:= ptraux^.info;
ptraux^.info:= ptr^.info;
ptr^.info:= aux;
end;
Bueno espero que esto sea lo que necesitas. Cualquier duda que tengas
podes consultármela cuando quieras.
(Por favor no olvides de valorar la respuesta)
Chau y suerte!
Hola
Gracias por la respuesta, lamentablemente eso fue para finales de agosto, y no la conseguí para el día que la necesitaba, de todos modos muchas gracias por tu respuesta, ten por seguro que me servirá en el futuro.
Diego Calderón C.
Costa Rica

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas