Just thought of a couple more ideas for you which use less memory and may be quicker (I haven't benchmarked them):
Instead of returning the sorted indices array and searching it, you can just find the location as you create the string array, like this:
If you know that the original list is sorted, then there's no need to sort the whole array again - it's easier to delete the current element from the array, then determine directly where to insert it:
This also lends itself to easily adding new elements (just eliminate "Delete From Array").
(I fluked the string comparison - hadn't realised it would work, but I guess it just treats the string as a byte array).
Even though the Help docs are not very clear, I'm pretty sure that the Inverse FFT takes a complex Src image and returns a grayscale Dst image. So does it work if you change im1 to be a Complex image (and use the ArrayToComplexImage VI), and change im2 to be a U8 image (though I think this will get automatically set)?