我应该创建一个名为swap()的静态方法,它扫描一个接受min和max的整数数组并交换它们。因此,如果max的索引为0且min index为3,则立即索引[5] = [3]并且索引[3] = [5]。 因此,数组由用户输入创建:
public static int[] readInputs(int arraySize) {
System.out.print("What length is the array? ");
arraySize = console.nextInt();
int[] intArray = new int[arraySize];
for (int i = 0; i <= intArray.length - 1; i++) {
System.out.print("Enter an integer: ");
userInput = console.nextInt();
intArray[i] = userInput;
}
return intArray;
} //end of readInputs()
我应该创建另一个静态方法来交换min和max,称为swap():
public static int[] swap(int[] intArray){
for(int index = 0; index < intArray.length; index++){
if (intArray[index] > max){
max = intArray[index];
}
if (intArray[index]<min) {
min = intArray[index];
}
}
} //end of swap()
到目前为止,我已经拥有它所以它找到了最小值和最大值,但我仍然坚持如何交换。
答案 0 :(得分:1)
只需存储最小值和最大值的索引。
<强>代码强>
public static int[] swap(int[] array) {
int minIndex = 0, maxIndex = 0;
for (int i = 1; i < array.length; ++i) {
if (array[i] < array[minIndex])
minIndex = i;
if (array[i] > array[maxIndex])
maxIndex = i;
}
int t;
if (maxIndex != minIndex) {
t = array[minIndex];
array[minIndex] = array[maxIndex];
array[maxIndex] = t;
}
return array;
}
public static void main(String[] args) {
for(int i : swap(new int[]{1,4,5,8,2,10}))
System.out.println(i);
}
<强>输出强>
10
4
5
8
2
1
答案 1 :(得分:0)
你几乎拥有它!您只需保存最大值和最小值的索引,然后交换值!
public static int[] swap(int[] intArray){
int max = intArray[0], min = intArray[0], maxIndex = 0, minIndex = 0;
for(int index = 1; index < intArray.length; index++){
if (intArray[index] > max){
max = intArray[index];
maxIndex = index;
}
if (intArray[index]<min) {
min = intArray[index];
minIndex = index;
}
}
intArray[maxIndex] = min;
intArray[minIndex] = max;
return intArray;
} //end of swap()