I love arrays, and I use them all the time. When I need to sort complex data I use a second array to create an index back to the first array.
But in your case, I am not sure an array is the best way to do this. You already identify the baddies you are interested in with the in_range instance variable, so they are very easy to select. Keeping the IDs in an array doesn't add much benefit when you can just pick them.
I would add another instance variable to baddies called Distance, and then in the update position section calculate the distance and store it in the instance variable. This will simplify your code, which makes it much easier to read months later when you are trying to remember what you were trying to do...
after the distance has been updated, you can pick the baddies in_range, and order them by Distance.