我是java的初学者。在这里帮助我尝试做BubbleSorting并在主要方法中获得异常。请告诉我在这里做的错误在哪里。
package Programs;
import java.util.Scanner;
public class EBubleSorting {
@SuppressWarnings("resource")
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Enter the Size");
int Size = in.nextInt();
int [] array = new int[Size];
int temp =0;
System.out.println("Enter the elemnts of an Array");
for (int i =0 ; i<Size ; i++)
{
array[i] = in.nextInt();
}
System.out.println("==============");
// Bubble Sorting Starts
for (int ii =0 ; ii<Size ; ii++)
{
if(array[ii] > array[ii+1])
{
array[ii+1] = temp;
System.out.println(array[ii+1]);
array[ii+1] = array[ii];
System.out.println(array[ii+1]);
array[ii] = temp;
System.out.println(array[ii]);
}
else if( array[ii] == array[ii+1])
{
}
}
}
}
答案 0 :(得分:2)
数组的索引从0到(array.length-1)。这是第一个问题。 如果你想冒泡排序一个数组,这里有一个可能对你有用的代码。
public static void bubbleSort(int[] arr) {
boolean swapped = true;
int j = 0;
int tmp;
while (swapped) {
swapped = false;
j++;
for (int i = 0; i < arr.length - j; i++) {
if (arr[i] > arr[i + 1]) {
tmp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = tmp;
swapped = true;
}
}
}
}
答案 1 :(得分:0)
在此代码中
for (int ii =0 ; ii<Size ; ii++)
{
if(array[ii] > array[ii+1])
当ii
等于Size - 1
(最后一项)时,array[ii+1]
将失败
如果数据大小为4,则数据为
array[0] = 2
array[1] = 4
array[2] = 3
array[3] = 1
然后当ii
为3(数组的最后一项)时,您无法访问array [3 + 1]
,因为这将超出数组的范围