Решение Заха очень хорошее.
Тем не менее, мне было интересно, почему есть необходимость сортировать. Если у вас есть перестановка индексов, используйте значения в качестве указателя на старый массив.
Это может устранить необходимость сортировки массива в первую очередь. Это не решение, которое можно использовать во всех случаях, но в большинстве случаев оно будет работать нормально.
Например:
a = [45,89,22,31,23,76];
b = [5,3,2,1,0,4]
Теперь, если вы хотите просмотреть значения в a , вы можете сделать что-то вроде (псевдокод):
for i=0 to 4
{
process(a[i]);
}
Если вы хотите просмотреть значения в новом порядке, выполните:
for i=0 to 4
{
process(a[b[i]]);
}
Как упоминалось ранее, этот раствор может быть достаточным во многих случаях, но не может быть в некоторых других случаях. В других случаях вы можете использовать решение Zach.But, но в тех случаях, когда это решение можно использовать, оно лучше, поскольку сортировка вообще не требуется.