交换数组的最小值和最大值[Java]

时间:2015-11-19 13:47:48

标签: java arrays

我应该创建一个名为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()

到目前为止,我已经拥有它所以它找到了最小值和最大值,但我仍然坚持如何交换。

2 个答案:

答案 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()