交换最大值和最小值

时间:2017-02-11 18:10:16

标签: java

所以我需要在10个数组中找到最大值和最小值并交换最大值和最小值。如果您有多种方法可以解决这个问题,那就更好了。

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int [] integers = new int [10];
    int max = 0;
    int min = 0;
    System.out.println("Please enter the 10 integers:");

    for ( int counter = 0 ; counter < integers.length ; counter++) {
                    integers[counter] = scan.nextInt();
    } // end for loop

    integers[0] = max;
    integers[0] = min;             // keep getting min as 0

    for ( int counter = 0 ; counter < integers.length ; counter++) {
        if ( integers[counter] > max ) {
            max = integers[counter]; 
            maxIndex = counter;
        }
        if ( integers[counter] < min) {
             min = integers[counter] ;
             minIndex = counter;
        }

    }  // end loop

    System.out.println(max);
    System.out.println(min);           

}

2 个答案:

答案 0 :(得分:1)

您不需要maxmin(只是索引)。此外,您应该从索引1(第二个元素)开始进行比较。最后,在循环之后,您可以交换两个索引处的值。像,

int maxIndex = 0, minIndex = 0;
for (int counter = 1; counter < integers.length; counter++) {
    if (integers[counter] > integers[maxIndex]) {
        maxIndex = counter;
    }
    if (integers[counter] < integers[minIndex]) {
        minIndex = counter;
    }

} // end loop
int t = integers[maxIndex];
integers[maxIndex] = integers[minIndex];
integers[minIndex] = t;
System.out.println(integers[maxIndex]);
System.out.println(integers[minIndex]);

答案 1 :(得分:0)

你可以使用排序算法。我使用冒泡排序。排序后索引0元素将是min,数组的最后一个索引将是max,然后你可以交换它们:

BufferedReader rd=new BufferedReader(new InputStreamReader(System.in));

    try{

        int n=Integer.parseInt(rd.readLine());

        String[] s=rd.readLine().split(" ");

        int[] num=new int[n];

        for(int i=0;i<n;i++){
            num[i]=Integer.parseInt(s[i]);

        }




        int temp=0;
         //bubble sort
        for(int i=0;i<n-1;i++){


            for(int j=0;j<n-1-i;j++){

                if(num[j]>num[j+1]){
                    temp=num[j];
                    num[j]=num[j+1];
                    num[j+1]=temp;
                }
            }
        }

        //swapping max and min
        temp=num[0];
        num[0]=num[n-1];
        num[n-1]=temp;


    }
    catch(Exception e){
        e.printStackTrace();

    }