我试图将数组中最大的元素与数组中的最后一个元素交换。
到目前为止,我已经能够将最大的元素放入最后一个元素槽中,但无法将最后一个元素交换到最大的元素槽中。
int largest = arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i] > largest) {
largest = arr[i];
//swap largest with last
temp = largest;
int last = arr.length;
arr[last - 1] = largest;
temp = arr[last - 1];
}
}
我建议您将代码分解为可以独立测试并且最有可能有其他用途的单独函数。例如…
void swap(int ar[], int i, int j) {
int t = ar[i];
ar[i] = ar[j];
ar[j] = t;
}
int findMaxIndex(int ar[]) {
int maxIndex = 0;
for(int i = 1; i < ar.length; i++) {
if (ar[i] > ar[maxIndex]) maxIndex = i;
}
return maxIndex;
}
...
int arr[] ...
int maxIndex = findMaxIndex(arr);
swap(arr,maxIndex,length(arr)-1);
注意这里没有错误处理来保持代码简洁。这将修复不那么微妙的错误在你的逻辑以及。例如,如果以数组
开头1,2,3,4
你会得到
1,4,2,3