我希望排序数组不改变它的数据。所以我只想把它的索引保存在另一个数组中。为此,我使用了冒泡排序算法,在每个交换步骤中,我都会更改新数组的元素,从而保留实际数组的索引。这是我的代码,但它不能正常工作
int[] bSort(int[] arrivalTimes) {
int[] sequence = new int[arrivalTimes.length];
for (int i = 0; i < sequence.length; i++) {
sequence[i] = i;
}
for (int i = 0; i < arrivalTimes.length - 1; i++) {
for (int j = i + 1; j < arrivalTimes.length; j++) {
if (arrivalTimes[i] > arrivalTimes[j]) {
int temp = sequence[i];
sequence[i] = sequence[j];
sequence[j] = temp;
}
}
}
return sequence;
}
如果输入数组是[2,5,1,0,4]
那么序列数组应该是[3,2,0,4,1](实际数组的索引)
1条答案
按热度按时间epfja78i1#
你也忘了对实际数组进行排序。如果arrivaltimes数组没有排序,那么您的条件将不会按预期的方式运行。
不过,这是一个低效的解决方案。我怀疑这是一些算法分配的一部分,所以我将留给你的优化。