java - 此选择排序代码有什么错误?错误:Arrayindexoutofboundsexception

标签 java arrays indexoutofboundsexception selection-sort

我试图执行选择排序,使用不带临时变量的交换。我没有使用数组的正确方法。请帮忙。

import java.io.*;
import java.util.*;

class SelectionSort {
    public static void main(String args[]) {
        Scanner S=new Scanner(System.in);
        int size,i,j;
        System.out.println("How many elements");
        size = S.nextInt();
        int[] array = new int[size];
        System.out.println("Type the element in unsorted order");
        for (i=0; i<size; i++) {
            array[i]=S.nextInt();
        }
        for (i=0; i<size; i++) {
            for (j=i++; j<=size; j++) {
                if(array[j]<array[i]) {
                    array[i]=array[i]+array[j];
                    array[j]=array[i]-array[j];
                    array[i]=array[i]-array[j];
                }
            }
        }
        System.out.println("Elements in sorted order:");
        for(i=0; i<size; i++) {
            System.out.println(array[i]);
        }
    }
}

最佳答案

参见以下代码:将for (j=i++; j<=size; j++)更改为for (j=i+1; j<size; j++)

import java.util.Scanner;

class SelectionSort {
    public static void main(String args[]) {
        Scanner S = new Scanner(System.in);
        int size, i, j;
        System.out.println("How many elements");
        size = S.nextInt();
        int array[] = new int[size];
        System.out.println("Type the element in unsorted order");
        for (i = 0; i < size; i++) {
            array[i] = S.nextInt();
        }
        for (i = 0; i < size; i++) {
            for (j = i + 1; j < size; j++) {
                if (array[j] < array[i]) {
                    array[i] = array[i] + array[j];
                    array[j] = array[i] - array[j];
                    array[i] = array[i] - array[j];
                }
            }
        }
        System.out.println("Elements in sorted order:");
        for (i = 0; i < size; i++) {
            System.out.println(array[i]);
        }
    }
}

关于java - 此选择排序代码有什么错误?错误:Arrayindexoutofboundsexception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31823989/

相关文章:

使用 boolean 查询进行 Java 字符串比较/匹配(例如 contains ("(' word 1' AND ' word 2') OR ' word 3'"))

java - 将多个 ByteArrayOutputStream 合并为一个 FileOutputStream

c# - Singleton 设计模式是否内置于任何框架中?

python - 循环以最小化python中数组的功能

java - JTable 在绘制期间抛出 IndexOutOfBoundsException

java - 在线程 "main"java.lang.ArrayIndexOutOfBoundsException : 2 中获取异常

java - 相对于父类(super class)构造函数的最终可变初始化

c++ - 使用 SSE 内在函数将 boolean 数组(8 字节 boolean )转换为 int 或 char

python - python的re.sub是否以数组作为入参?

java - 拆分字符串时数组越界异常