All collision detection algorithms between n objects ultimately execute in ((n-1)*(n-1))/2 time. No matter which way you slice and dice the problem with clever and fiddly linked lists and octrees you will always end up doing at least ((n-1)*(n-1))/2 collision detection tests, whether it being direct collisions or classification of objects beforehand into octree nodes.
You can gradually tend towards an n log n time algorithm by using tricks like octrees but the added complexity and overhead means this only becomes viable as n grows very large.
My advice, therefore, is to go with the simplest approach you can get away with, and make sure that you can change your approach if you find that there is a bottleneck in collision detection. Brute force is perfectly acceptable for a couple of hundred objects per frame.