You can organize your objects in a quad-tree, that is spatially organize your objects. Fairly simple to implement and a lot faster than O(n2).
If you game is a tile based game and objects are assigned to tiles then it's a lot simpler to check if your objects collides with any other object in the same tile (if you allow multiple objects on a single tile) or surrounding tiles (which can be defined as many tiles outward as you like).
I'm sorry I don't got any links for you, but I'm sure Google is your friend
