java选择排序:无法调用swapArray方法

package 排序;

public class xuanzhe {
    public static void main(String[] args) {
//        选择排序
        int a[]= {123,1231,21,31,23121,1123};
        System.out.println("请输入数组");
        printArray(a);
        System.out.println("排序完成");
        selectSorr(a);
        printArray(a);
    }

    public static void selectSorr(int[] a) {
        // TODO 自动生成的方法存根
        int i=0;
        int j=0;
        int min_index=0;
        for ( i = 0; i < a.length; i++) {
            min_index=i;
            for (j = i+1; j < a.length; j++) {
                min_index=j;
            }
        }
        if (i!=min_index) {
            swapArray(i,j,a);
        }
    }
//    无法调用swapArray方法
    public static void swapArray(int i,int j, int []a) {
        // TODO 自动生成的方法存根
        int temp=a[i];
        a[i]=a[j];
        a[j]=temp;
    }

    public static void printArray(int[] array) {
        // TODO 自动生成的方法存根
        for(int i:array) {
            System.out.print(i+" ");
        }
        System.out.println();
    }
}
 

int i与j声明在for循环之外。在最后一次循环中即便没有进入循环体,但是i++执行了,最终i=6数组越界

    public static void selectSorr(int[] a) {
        // TODO 自动生成的方法存根
        int i=0;
        int j=0;
        int min_index=0;
        for ( i = 0; i < a.length; i++) {
            min_index=i;
            for (j = i+1; j < a.length; j++) {
                min_index=j;
            }

        if (i!=min_index) {
            swapArray(i,j,a);
        }
        }
  
    }

这样就可以了

for ( i = 0; i < a.length; i++) {}

for语句 当i = 5 执行完 以后 i++ = 6 判断一下 i < a.length  不符合条件跳出了,所以你的入参是 i=6 j=6(i=5的时候赋值的) min_index=5 所以 int temp=a[i]; 的时候 a[6] 数组越界了