Octress and KD trees are tried and tested solution, and generally you'd rarely really need anything more complex than that.