【问题标题】:Swapping Min and Max int of an array [Java]交换数组的最小和最大 int [Java]
【发布时间】:2015-11-19 22:12:48
【问题描述】:

我应该创建一个名为 swap() 的静态方法,它扫描一个整数数组,该数组接受最小值和最大值并交换它们。因此,如果 max 的索引为 0,min 的索引为 3,则 index[5] = [3] now 和 index [3] = [5] now。 所以数组是由用户输入创建的:

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

我应该创建另一个交换最小值和最大值的静态方法,称为 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()

到目前为止,我已经有了它,所以它可以找到最小值和最大值,但我不知道如何交换。

【问题讨论】:

  • 不保存maxmin,而是保存最大值和最小值的索引。
  • @Manu 我不是已经这样做了吗?还是我只是存储索引的值?
  • @Shayd3 不,max = intArray[index]; 是实际元素。如果要保存索引,max = index;(当然max是和int
  • @ryanyuyu 啊!好的。谢谢!现在我只需要弄清楚如何交换
  • 如果数组中有几个 MIN 或 MAX 怎么办?

标签: java arrays


【解决方案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

【讨论】:

  • 如果您的示例中有 2 个十或 2 个怎么办?
  • @cricket_007 遇到相同元素时,将交换第一个遇到的最小值和最大值。
  • 当然,我理解,但根据问题描述,不应该交换所有最小值和最大值吗?
  • 您可以从 1 开始循环。
  • @KlitosKyriacou 感谢您的指点。我已经编辑了代码;)
【解决方案2】:

你几乎拥有它!您只需保存最大值和最小值的索引,然后交换值!

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

【讨论】:

    猜你喜欢
    • 2022-01-12
    • 2021-01-08
    • 2013-06-04
    • 1970-01-01
    • 2018-04-07
    • 1970-01-01
    • 2012-09-11
    • 2013-09-02
    • 1970-01-01
    相关资源
    最近更新 更多