繁体   English   中英

切换生成的 int 数组的最大负元素和最小正元素

[英]Switching Maximum negative and minimum positive elements of generated int array

我的任务是编写一个生成 20 个随机整数数组 [-10;10] 的 java 程序。 然后我必须切换这个生成数组的最大负元素和最小正元素。

大批:

public class Array

public static void main(String[] args) {
    int arr[];
    arr = new int [20];
    for (int i=0;i<arr.length;i++)
            arr[i] = (int) ( Math.random() * 21)-10;
    for (int i: arr)
            System.out.print( i + " " );
}

那么,我如何切换生成的元素? 我应该如何找到最小正元素和最小负元素? 我应该使用哪些方法?

解决方案可能更复杂,因为您没有唯一的数字,但根据您的问题,这是一个简单的解决方案(它将第一个最小值更改为第一个最大值)。

遍历您的数组,保持maxmin + 它们的位置( maxPosminPos )。 然后使用aux切换它们:

    int max = arr[0], min = arr[0];
    int maxPos = 0, minPos = 0;
    for (int i = 1; i < arr.length; i++) {
        if (max > arr[i]) {
            max = arr[i];
            maxPos = i;
        }
        if (min < arr[i]) {
            min = arr[i];
            minPos = i;
        }
    }

    int aux = arr[maxPos];
    arr[maxPos] = arr[minPos];
    arr[minPos] = aux;

无需aux即可切换这些数字的另一种方法:

    arr[maxPos] += arr[minPos];
    arr[minPos] = arr[maxPos] - arr[minPos];
    arr[maxPos] -= arr[minPos];

但它更复杂。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM