Fórum Qual o melhor algoritimo para ordenar uma matriz... #316553

18/03/2006

0

Boa tarde,

Estou precisando ordenar uma matriz pelo campo código... gostaria de saber se existe alguma função do delphi que já faça isso e se não tem qual seria a solução...


desde já obrigado


Lauro.balceiro

Lauro.balceiro

Responder

Posts

20/03/2006

Rjun

Faça uma procura pelo método QuickSort.


Responder

Gostei + 0

20/03/2006

Martins

Dê uma olhada nesse link

[url=http://www2.fundao.pro.br/articles.asp?cod=11][b:0214f459f4]QuickSort[/b:0214f459f4][/url]

Boa sorte!!


Responder

Gostei + 0

20/03/2006

Massuda

O Delphi não tem nenhuma rotina pronta de ordenação (como, por exemplo, o qsort() do C), mas a classe TList (e seus derivados) suporta ordenação através do método TList.Sort.


Responder

Gostei + 0

20/03/2006

Marco Salles

e se voce usar Funções de CallBack , juntamente com ListS.hort , voce podera criar uma classe que em apenas um click , ordena por qualquer indice

Se voce pesquisar e não encontrar , eu tenho um exemplo pronto , que hora me atende bem .. Voce posta que eu mando e coloco aqui no tópico

Valeu...


Responder

Gostei + 0

20/03/2006

Martins

[quote:d9fdfa5578=´Marco Salles´]e se voce usar Funções de CallBack , juntamente com ListS.hort , voce podera criar uma classe que em apenas um click , ordena por qualquer indice

Se voce pesquisar e não encontrar , eu tenho um exemplo pronto , que hora me atende bem .. Voce posta que eu mando e coloco aqui no tópico

Valeu...[/quote:d9fdfa5578]

Interessante [b:d9fdfa5578]Marco[/b:d9fdfa5578], é muito extenso esse código?


Responder

Gostei + 0

20/03/2006

Lauro.balceiro

posta ai meu...


Responder

Gostei + 0

21/03/2006

Martins

posta ai meu...


O Código abaixo é de autoria de [b:94fd145943]Marco Salles[/b:94fd145943].

unit Unit1; 

interface 

uses 
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
  Dialogs, StdCtrls; 

type 
  TClientes = class 
  private 
    FNome: string; 
    FEndereco: string; 
    procedure SetNome(const Value: string); 
    procedure SetEndereco(const Value: string); 
  public 
    property Nome: string read FNome write SetNome; 
    property Endereco: string read FEndereco write SetEndereco; 
  end; 

  TForm1 = class(TForm) 
    ListBox1: TListBox; 
    Label1: TLabel; 
    Button1: TButton; 
    Button2: TButton; 
    procedure Button2Click(Sender: TObject); 
    procedure Button1Click(Sender: TObject); 
    procedure FormShow(Sender: TObject); 
  private 
    FListaClientes: TList; 
    lCliente1, lCliente2, lCliente3: TClientes; 
    procedure SetListaClientes(const Value: TList); 
  private 
    { Private declarations } 
    property ListaClientes: TList read FListaClientes write SetListaClientes; 
    procedure EncheListaClientes; 
    procedure AtualizaListBox; 
  public 
    { Public declarations } 
  end; 

var 
  Form1: TForm1; 

function ClassificaPorNome(item1: Pointer; item2: Pointer): integer; 
function ClassificarPorEndereco(item1: Pointer; item2: Pointer): integer; 

implementation 

{$R *.dfm} 

{ TClientes } 

procedure TClientes.SetEndereco(const Value: string); 
begin 
  FEndereco := Value; 
end; 

procedure TClientes.SetNome(const Value: string); 
begin 
  FNome := Value; 
end; 

{ TForm1 } 

procedure TForm1.SetListaClientes(const Value: TList); 
begin 
  FListaClientes := Value; 
end; 

procedure TForm1.FormShow(Sender: TObject); 
begin 
  ListaClientes := TList.Create; 
  EncheListaClientes; 
  AtualizaListBox; 
end; 

procedure TForm1.EncheListaClientes; 
begin 
  lCliente1 := TClientes.Create; 
  lCliente1.Nome := ´Paulo´; 
  lCliente1.Endereco := ´Av. Joao Pereira Barreto´; 
  ListaClientes.Add(lCliente1); 

  lCliente2 := TClientes.Create; 
  lCliente2.Nome := ´Andre´; 
  lCliente2.Endereco := ´Av. Ayrton Senna´; 
  ListaClientes.Add(lCliente2); 

  lCliente3 := TClientes.Create; 
  lCliente3.Nome := ´Jair´; 
  lCliente3.Endereco := ´Rua Dom Pedro I´; 
  ListaClientes.Add(lCliente3); 
end; 

procedure TForm1.AtualizaListBox; 
var 
 lIndex: integer; 
begin 
  ListBox1.Items.Clear; 
  for lIndex := 0 to ListaClientes.Count -1 do 
      ListBox1.Items.Add(TClientes(ListaClientes[lIndex]).Nome + ´-´ + TClientes(ListaClientes[lIndex]).Endereco); 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  ListaClientes.Sort(@ClassificaPorNome); 
  AtualizaListBox; 
end; 

function ClassificarPorEndereco(item1, item2: Pointer): integer; 
begin 
  result := CompareText(TClientes(item1).Endereco, TClientes(item2).Endereco); 
end; 

function ClassificaPorNome(item1, item2: Pointer): integer; 
begin 
  result := CompareText(TClientes(item1).Nome, TClientes(item2).Nome); 
end; 

procedure TForm1.Button2Click(Sender: TObject); 
begin 
  ListaClientes.Sort(@ClassificarPorEndereco); 
  AtualizaListBox; 
end; 

end.


Boa sorte.


Responder

Gostei + 0

21/03/2006

Marco Salles

O Código abaixo é de autoria de Marco Salles.


quem sou eu amigo martins.. Tenho que comer muito arroz.. A utoria depois do almoço eu posto...

So que o que vale hoje no meu conceito e alem do conhecimento e saber aonde achar , pois tempo é tudo e não dar para saber quase nada.. Tem que saber é pesquisar..


Responder

Gostei + 0

21/03/2006

Adriano Santos

[quote:b493bebc0f=´Marco Salles´]
quem sou eu amigo martins.. Tenho que comer muito arroz.. A utoria depois do almoço eu posto...[/quote:b493bebc0f]

Que comer arroz o que rapá? Tamu ligado que vc é o cara, tah é escondendo o jogo...rsrs...

Ficou muito bom.


Responder

Gostei + 0

21/03/2006

Marco Salles

Eu não falo isso com falsa modestia ... Eu falo de coração..

O codigo de Autoria do Paulo Roberto Quicoli (pauloquicoli@gmail.com)
é simplesmente uma obra prima nos conceitos que tange Funções de CallBack.. Agente so tem o trabalho de ler e guardar o que se quer e aonde procurar


Responder

Gostei + 0

21/03/2006

Adriano Santos

[quote:3c8e7b3597=´Marco Salles´]Eu não falo isso com falsa modestia ... Eu falo de coração..

O codigo de Autoria do Paulo Roberto Quicoli (pauloquicoli@gmail.com)
é simplesmente uma obra prima nos conceitos que tange Funções de CallBack.. Agente so tem o trabalho de ler e guardar o que se quer e aonde procurar[/quote:3c8e7b3597]

Heheh, blz maninho...vlw


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar