Java数组交换问题

将数组中最小值与第一个数交换,最大值与最后一个数交换


import java.util.Scanner;

public class work5 {
    //输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组
    public static void main(String[] args) {
        Scanner a = new Scanner(System.in);
        System.out.print("请输入数组长度:");
        int q = a.nextInt();
        int max = 0;
        int min = 0;
        int[] b = new int[q];
        for(int c = 0;c<6;c++){
            int d = a.nextInt();//
            b[c] = d;
        }
        for(int e = 0;e<b.length;e++){
            if(b[e]>b[max]){//一个数比最大的数还大 这个数就是最大的
                max=e;//获取最大值的位置
            }else if(b[min]>b[e]){//一个数比最小的数还小 这个数就是最小的
                min=e;//获取最小值的位置
            }
        }
        //最大的数与最后一个数交换
        int f = b[[q-1];//把数组里最后一个元素暂赋值给f
        b[[q-1] = b[max];//把最大值赋给数组最后一个元素
        b[max] = f;//把f赋值给数组里最后一个元素

        //最小的与第一个交换
        int g= b[0];//q为定义的数组长度 减1是因为数组里第一个元素比数组长度小一
        b[0] = b[min];
        b[min] = g;
        for(int h = 0;h<b.length;h++){
            System.out.print(b[h]+" ");
        }
    }
import java.util.Random;

public class Test {
    public static void main(String[] args) {
        int[] origin = new int[10];
        Random random = new Random();
        System.out.println("原始的数据为:");
        for (int i = 0; i < origin.length; i++) {
            origin[i] = random.nextInt(100);
            System.out.print(origin[i] + " ");
        }

        System.out.println("\n操作后的数组为");
        new Test().operate(origin);
        for (int v : origin) {
            System.out.print(v + " ");
        }
    }

    public void operate(int[] origin) {
        if (origin == null || origin.length == 0) {
            return;
        }
        int minInd = 0, maxInd = 0;
        for (int i = 1; i < origin.length; i++) {
            if (origin[i] < origin[minInd]) {
                minInd = i;
            }
            if (origin[i] > origin[maxInd]) {
                maxInd = i;
            }
        }
        swap(origin, 0, minInd);
        swap(origin, origin.length - 1, maxInd);
    }

    /**
     * 交换 t1, t2 位置的数
     */
    public void swap(int[] origin, int i1, int i2) {
        int t = origin[i1];
        origin[i1] = origin[i2];
        origin[i2] = t;
    }
}

这里只提供一种思路,可以使用遍历的办法遍历每一个数据,记录下最大和最小,然后再替换。
设置一个默认的最小值比如-99999,默认最大值比如999999.然后比较。

这里只提供一种思路,经典排序先排一下, 确定最大最小值
原数据中查找所在位置, 交换。