No because it's not comparing entries in the same array. The first element from the first array could match up with the first in the second array.
Also, that's not a very expensive loop at all. 99% of the time, you are only going to have 1 or 2 contacts in an arbiter (pair of shapes). The only way you'd have more is if you are colliding an extremely detailed polygon that's deeply penetrating another object. Even then, this loop will be far less expensive that the actual collision query.
Can't sleep... Chipmunks will eat me...
Check out our latest projects! -> http://howlingmoonsoftware.com/wordpress/