Arrays 交换数组的最大值和最小值

Arrays 交换数组的最大值和最小值,arrays,Arrays,从键盘读入10个输入,并将它们存储在一个数组中。找到数组中最大值和最小值的位置(或索引),交换它们(将最大的元素移动到最小的位置,将最小的元素移动到最大的位置),然后再次打印。如果用户输入7,13,-5,10,6,那么您的程序应该打印7,-5,13,10,6 这是我的密码。如果你能对此发表评论,那就太好了 import java.util.Scanner; public class Task2 { public static void main(String [] args)

从键盘读入10个输入,并将它们存储在一个数组中。找到数组中最大值和最小值的位置(或索引),交换它们(将最大的元素移动到最小的位置,将最小的元素移动到最大的位置),然后再次打印。如果用户输入7,13,-5,10,6,那么您的程序应该打印7,-5,13,10,6

这是我的密码。如果你能对此发表评论,那就太好了

import java.util.Scanner;

public class Task2
{
    public static void main(String [] args)
    {
        Scanner scn = new Scanner(System.in);
        int [] source = new int[10];
        for(int i=0; i<10; i++)
           source[i] = scn.nextInt();

        int maxIndex = 0;
        int max = source[0];
        for(int i=0; i<10; i++)
        {
            for(int j=i+1; j<10; j++)
            {
               if(source[j]>max)
               {
                  maxIndex = j;
                  max = source[maxIndex];
               }
            }
        }
        int minIndex = 0;
        int min = source[0];
        for(int i=0; i<10; i++)
        {
            for(int j=i+1; j<10; j++)
            {
                if(source[j]<min)
                {
                   minIndex = j;
                   min = source[minIndex];
                }
            }
        }
        int temp = source[minIndex];
        source[minIndex] = source[maxIndex];
        source[maxIndex] = temp;
        for(int i=0; i<10; i++)
           System.out.print(source[i] + " ");
    }
}    
import java.util.Scanner;
公共课任务2
{
公共静态void main(字符串[]args)
{
扫描仪scn=新扫描仪(System.in);
int[]源=新的int[10];

for(int i=0;i您的嵌套for循环效率低下,发生的情况也不明显。我假设这是您问题的一部分。另一个问题是您实例化了一个10元素数组,但输入中可能没有10个元素

这也许更符合实际情况

import java.util.Scanner;

public class Task2 {
    public static void main(String [] args) {
        Scanner scanner = new Scanner(System.in);
        int [] source = new int[10];
        for(int i = 0; i < 10; i++)
           source[i] = scanner.nextInt();

        int maxIndex = 0,
            minIndex = 0;

        for (int i = 0; i < source.length; i++) {
            int currentValue = source[i];

            if (currentValue > source[maxIndex]) {
                maxIndex = i;
            }

            if (currentValue < source[minIndex]) {
                minIndex = i;
            }
        }


        int temp = source[maxIndex];
        source[maxIndex] = minValue;
        source[minIndex] = temp;

        for(int i = 0; i < source.length; i++) {
           System.out.print(source[i] + " ");
        }
    }
}
import java.util.Scanner;
公共课任务2{
公共静态void main(字符串[]args){
扫描仪=新的扫描仪(System.in);
int[]源=新的int[10];
对于(int i=0;i<10;i++)
source[i]=scanner.nextInt();
int maxIndex=0,
minIndex=0;
for(int i=0;i源[maxIndex]){
maxIndex=i;
}
if(当前值<源[minIndex]){
minIndex=i;
}
}
int temp=源[maxIndex];
源[maxIndex]=最小值;
源[minIndex]=温度;
for(int i=0;i
  • 移除每个循环中的循环。这只会使你遍历数组的次数过多

  • 您可以将最小循环和最大循环合并在一起,并在同一次遍历中找到最大循环和最小循环。(这基本上节省了内存往返)


  • 你有什么问题?