Localização de Itens em Lista por nome
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
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
Curtidas 0
Respostas
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
13/05/2004
bom, era isso mesmo que estava procurando,
esse esquema usado no TStringList.Find
:)
esse esquema usado no TStringList.Find
:)
GOSTEI 0
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.
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
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
valeu mesmo, e sobre o hashing, sim, tenho interesse em conhecer, se vc puder me informar agradeço
:P
GOSTEI 0
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.
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