Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-01-2005
burasu burasu is offline
Miembro
 
Registrado: may 2003
Ubicación: Cádiz - España
Posts: 183
Poder: 22
burasu Va por buen camino
Ordenar array ????

Hola amigos, tengo un array de 4 valores relleno de datos no ordenados, por ejemplo [2,8,4,1]

necesito volcarlos en otro array de registros de una forma ordenada de menor a mayor, quedando así [1,2,4,8].

Tengo el problema de que si el array original es por ejemplo [2,0,4,1] el resultado de ese ordenamiento de array no debe ser [0,1,2,4], sino [1,2,4,0], es decir, me debe ordenar los valores de forma que los primeros sean los valores ordenados y los últimos digitos aquellos que sean cero.

He consultado en el foro y no veo una consulta parecida, y me está dando un verdadero quebradero por que no veo la lógica para poder generar el ordenamiento.

Gracias de antemano.
Responder Con Cita
  #2  
Antiguo 20-01-2005
Avatar de __hector
[__hector] __hector is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 1.075
Poder: 23
__hector Va por buen camino
Metodo burbuja (busca el algoritmo, seguro lo consigues incluso escrito en pascal). Se trata de recorrer el arreglo e ir organizando sus valores. Una modificacion seria condicionar el if de la decisicion para tratar de forma especial los ceros
__________________
Héctor Geraldino
Software Engineer
Responder Con Cita
  #3  
Antiguo 20-01-2005
burasu burasu is offline
Miembro
 
Registrado: may 2003
Ubicación: Cádiz - España
Posts: 183
Poder: 22
burasu Va por buen camino
Ok Hector gracias por el consejo
Responder Con Cita
  #4  
Antiguo 20-01-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por hector
seguro lo consigues incluso escrito en pascal
Y sin ir más lejos, en los demos que vienen con Delphi está el del uso de hilos (threads) donde vienen tres métodos distintos para ordenamiento.

// Saludos
Responder Con Cita
  #5  
Antiguo 20-01-2005
Avatar de Albano
Albano Albano is offline
Miembro
 
Registrado: oct 2004
Ubicación: Nogales, Sonora, Mexico
Posts: 422
Poder: 20
Albano Va por buen camino
Codigo (array de 10 numeros)

Hice un programa para ordenar de la manera que tu pediste un array de 10 elementos, espero te sirva.

procedure TForm1.BtnOrdenarClick(Sender: TObject);


var
x, y, tot, aux: integer;


begin
tot := 10; //tot es la variable que me dice cuantos de los

for x := 1 to tot - 1 do //numeros del arreglo no son 0


begin
if vec[x] = 0 then



begin
for y := x to tot - 1 do //se recorren todos los valores una unidadvec[y] := vec[y+1]; //hacia atras
vec[tot] := 0; //a la ultima posicion se le da valor de cero
dec(tot);

end;


end;

for x := 1 to tot do //Metodo de burbuja


begin
for y := 1 to tot - 1 do



begin
if vec[y] > vec[y+1] then



begin
aux := vec[y];

vec[y] := vec[y+1];
vec[y+1] := aux;

end;


end;


end;


end;

Última edición por Albano fecha: 20-01-2005 a las 18:33:51.
Responder Con Cita
  #6  
Antiguo 20-01-2005
burasu burasu is offline
Miembro
 
Registrado: may 2003
Ubicación: Cádiz - España
Posts: 183
Poder: 22
burasu Va por buen camino
Muchas gracias Albano.

Salu2
Responder Con Cita
  #7  
Antiguo 15-02-2007
focosoft focosoft is offline
Registrado
 
Registrado: dic 2006
Posts: 1
Poder: 0
focosoft Va por buen camino
Tambien me sirvió tu ejemplo

Aún despues de que ya tiene rato que publicaste tu consejo, me sirvió para ordenar fechas, te dejo lo que arreglé:

La variable tot, la declaré publica y el objetivo es explorar una serie de nombres de archivo los cuales están guardados con un mombre de fecha, la intención es extraer el nombre del archivo, acomodarlo por fecha en un combo list box y para eso necesité de tu método burbuja., gracias.


procedure TForm1.Button3Click(Sender: TObject);
var
SearchRec: TSearchRec;
archivo : string;
x, y :integer;
aux : TDateTime;
vec: array[0..500] of TdateTime;
begin
tot:=0;
if psvBrowseFolderDialog1.Execute then
begin
Memo2.Clear;
SB1.SimpleText:=psvBrowseFolderDialog1.FolderName;
archivo:='';
CLB1.Clear;
if FindFirst(psvBrowseFolderDialog1.FolderName+'\*.01', faAnyFile and not
(faVolumeID or faDirectory), SearchRec) = 0 then
begin
repeat

archivo:=SearchRec.Name;
tot:=tot+1;
vec[tot]:=StrToDate(archivo[3]+archivo[4]+'/'+archivo[5]+archivo[6]+'/'+archivo[7]+archivo[8])
//CLB1.Items.Add(archivo[3]+archivo[4]+'/'+archivo[5]+archivo[6]+'/'+archivo[7]+archivo[8]);
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
///MÉTODO BURBUJA PARA ARREGLAR FECHAS ///////////

tot2 := tot; //tot es la variable que me dice cuantos de los
for x := 1 to tot - 1 do //numeros del arreglo no son 0
begin
if vec[x] = 0 then
begin
for y := x to tot - 1 do //se recorren todos los valores una unidadvec[y] := vec[y+1]; //hacia atras
vec[tot] := 0; //a la ultima posicion se le da valor de cero
dec(tot);
end;
end;
for x := 1 to tot do //Metodo de burbuja
begin
for y := 1 to tot - 1 do
begin
if vec[y] > vec[y+1] then
begin
aux := vec[y];
vec[y] := vec[y+1];
vec[y+1] := aux;
end;
end;
end;

////////////////////////////////////////////////
//FOR PARA INSETAR EN CLB1///////////////
for x:=1 to tot2 do
begin
CLB1.Items.Add(DateToStr(vec[x]));
end;
///////////////

end;
end;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 12:50:44.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi