递归冒泡排序异常

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