E ae pessoal, sou novo no forum, espero aprender e compartilahr um pouco dos meus conhecimentos aqui.
Minha dúvida é a seguinte, queria saber se é possivel indexar como se fosse um vetor uma lista encadeada, no qual eu tenho que saber qual o elemento do meio para poder fazer uma busca binária na lista usando recursividade.
É, só que é uma operação lenta, já que você tem de percorrer a lista encadeada (linked list) até alcançar o elemento desejado.
A classe java.util.LinkedList é uma implementação de lista duplamente ligada, e ela tem um método get que pega o N-ésimo elemento (percorrendo a lista até chegar a tal elemento).
joaofilipi
Sim realmente é um processo lento. Tipo, sabendo q eu tenho a lista já ordenada e eu to querendo apenas saber qual é o valor que está no meio dessa lista, supondo que ela tenha o formato de um vetor, é possivel eu descobrir qual esse elemento por essa classe sem ter mais nenhuma informação a não ser a quantidade total de elementos?
T
thingol
Acho que você deu a resposta à própria pergunta.
Se você acha demorado percorrer uma lista ligada para achar um elemento no meio, pode usar uma Skip List. (Se a lista for relativamente pequena não há problemas).
E
emanuel.LB
Eu não sei se entendi sua pergunta, mas se vc quer pegar o elemento do meio não bastaria algo como objLista.get(objLista.leght/2) ?
Obs: Em java divisão de int\long por int\long retorna um int\long, ou seja se o resultado de objLista.leght/2 não for inteiro ele é truncado.
Espero que tenha ajudado…
Abraço
joaofilipi
Valeu pessoal agradeço a ajuda, vo tentar com LinkedList, se eu consseguir posto o resultado…flw
E
emanuel.LB
Opa, verdade, List usa size() , array é q usa .lenght()
theBalrog
joaofilipi:
Sim realmente é um processo lento. Tipo, sabendo q eu tenho a lista já ordenada e eu to querendo apenas saber qual é o valor que está no meio dessa lista, supondo que ela tenha o formato de um vetor, é possivel eu descobrir qual esse elemento por essa classe sem ter mais nenhuma informação a não ser a quantidade total de elementos?
Cara, não sei se o que o pessoal respondeu ficou claro o suficiente. O caso é que se você tiver esse objeto tipo LinkedList que o pessoal falou, você consegue sim obter um determinado elemento, de posse apenas do tamanho da lista. E diga-se de passagem, esse objeto LinkedList tem o método size() que retorna quantos elementos estão contidos ali e o método get(N) que, como o amigo falou anteriormente, retorna o enésimo elemento da lista.