Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么';这个选择排序代码有什么错误?错误:Arrayindexoutofboundsexception_Java_Arrays_Indexoutofboundsexception_Selection Sort - Fatal编程技术网

Java 什么';这个选择排序代码有什么错误?错误:Arrayindexoutofboundsexception

Java 什么';这个选择排序代码有什么错误?错误:Arrayindexoutofboundsexception,java,arrays,indexoutofboundsexception,selection-sort,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

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

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]);
        }
    }
}
import java.io.*;
导入java.util.*;
类选择排序{
公共静态void main(字符串参数[]){
扫描仪S=新的扫描仪(System.in);
int-size,i,j;
System.out.println(“多少元素”);
尺寸=S.nextInt();
int[]数组=新的int[size];
System.out.println(“按未排序的顺序键入元素”);

对于(i=0;i这不是选择排序。这是冒泡排序的Java实现。交换是在不使用临时变量的情况下执行的

问题出在下面代码的内部for循环中

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];
    }
  }
}

for(i=0;i参见下面的代码:Change
for(j=i++;jYour
for
循环条件应该是
jt内部
for
循环中的
j=i++
条件看起来完全错误。如果将
for
条件保留为
jThanks,我没有看到。现在更正。
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]);
        }
    }
}