Localização de Itens em Lista por nome

Delphi

13/05/2004

Eu estou tentando fazer uma função semelhante a FindComponent, só que mais otimizada.
O 1º modo seria, pegar item por item, e ir comparando o nome até encontrar o componente procurado
mas acho que tem como otimizar isso, tipo, se deixar a lista em ordem alfabética...
O que queria saber, é se alguém conhece alguma técnica para otimizar a busca por nome

vlw


Marcelo Saviski

Marcelo Saviski

Curtidas 0

Respostas

Beppe

Beppe

13/05/2004

Q lista? Se for TStringList, há a propriedade Sorted, q mantém a lista em ordem alfabética. Depois a mais rápido fazer a busca. Sete esta prop. para True tão logo criar a lista, e então adicione os ítems. O IndexOf pode ser usado para pesquisar, ou o método Find.


GOSTEI 0
Marcelo Saviski

Marcelo Saviski

13/05/2004

bom, era isso mesmo que estava procurando,
esse esquema usado no TStringList.Find
:)


GOSTEI 0
Beppe

Beppe

13/05/2004

[quote:cf839c5ab9=´Marcelo Saviski´]bom, era isso mesmo que estava procurando,
esse esquema usado no TStringList.Find
:)[/quote:cf839c5ab9]
Ah, vc quer o algoritmo?
Chama-se busca binária. Vc trabalha com um subarray(L até R), inicialmente L = 0 e R = Count - 1. Vc compara o item no meio deste subarray(M = (L + R) / 2) com o q está procurando, se for menor, R := M, se maior, L := M, senão, o algoritmo acaba, pois achou o item.

Procure por busca binária(binary search) na web q tu acha mais informação.

PS: existe hashing(dispersão), q eh bem mais eficiente...drop me a mail se tiver interesse em conhecer.


GOSTEI 0
Marcelo Saviski

Marcelo Saviski

13/05/2004

Opa, desculpe a demora
valeu mesmo, e sobre o hashing, sim, tenho interesse em conhecer, se vc puder me informar agradeço
:P


GOSTEI 0
Beppe

Beppe

13/05/2004

[quote:c69c03c605=´Marcelo Saviski´]Opa, desculpe a demora
valeu mesmo, e sobre o hashing, sim, tenho interesse em conhecer, se vc puder me informar agradeço
:P[/quote:c69c03c605]
Nada, o atrasado sou eu...ontem deu problema com a brturbo, mas hj vc deve ter recebido.


GOSTEI 0
POSTAR