递归冒泡排序异常
recursive bubble sort exception
我正在尝试编写递归冒泡排序方法,但我得到了 ArrayIndexOutOfBoundsException: 11
。我看不出我做错了什么。
public static int[] recBubSort(int []arr, int n){
if(n > arr.length-1){
return arr;
}
if(arr[n] > arr[n+1]){
swap(arr,n,n+1);
}
return recBubSort(arr,n+1);
}
public static void swap(int arr[], int minPos, int index) {
//System.out.println("SelectionSort SWAP...");
int temp = arr[minPos];
arr[minPos] = arr[index];
arr[index] = temp;
}
您检查 n
不大于最后一个允许的索引(即 length - 1
,但随后在您的下一个 if
中,您询问 arr[n+1]
。
假设您的数组有 5 个项目。而你的n
是4,你查过了,不大于5-1
。但是 n+1
是 5,没有第 5 项。
是这一行:
if(arr[n] > arr[n+1]){
您没有检查 n+1
是否越界。你只检查 n
是否越界。
ArrayIndexOutOfBoundsException 表示 The index 为负数或大于或等于数组的大小。
你可以试试这个..
void bubbleSort (double array[], int size)
{
double temp ;
for (int pass = 1; pass < size; pass++)
for (int i = 0; i < size – pass; i++)
if (array [i] > array [i+1])
{
temp = array[i] ;
array[i] = array [i+1] ;
array [i+1] = temp ;
}
}
我正在尝试编写递归冒泡排序方法,但我得到了 ArrayIndexOutOfBoundsException: 11
。我看不出我做错了什么。
public static int[] recBubSort(int []arr, int n){
if(n > arr.length-1){
return arr;
}
if(arr[n] > arr[n+1]){
swap(arr,n,n+1);
}
return recBubSort(arr,n+1);
}
public static void swap(int arr[], int minPos, int index) {
//System.out.println("SelectionSort SWAP...");
int temp = arr[minPos];
arr[minPos] = arr[index];
arr[index] = temp;
}
您检查 n
不大于最后一个允许的索引(即 length - 1
,但随后在您的下一个 if
中,您询问 arr[n+1]
。
假设您的数组有 5 个项目。而你的n
是4,你查过了,不大于5-1
。但是 n+1
是 5,没有第 5 项。
是这一行:
if(arr[n] > arr[n+1]){
您没有检查 n+1
是否越界。你只检查 n
是否越界。
ArrayIndexOutOfBoundsException 表示 The index 为负数或大于或等于数组的大小。 你可以试试这个..
void bubbleSort (double array[], int size)
{
double temp ;
for (int pass = 1; pass < size; pass++)
for (int i = 0; i < size – pass; i++)
if (array [i] > array [i+1])
{
temp = array[i] ;
array[i] = array [i+1] ;
array [i+1] = temp ;
}
}