gpt4 book ai didi

java - CLRS 算法的快速排序实现中的异常

转载 作者:太空宇宙 更新时间:2023-11-04 13:27:51 26 4
gpt4 key购买 nike

我正在尝试 CLRS 中给出的 QuickSort 实现,但它给出了数组索引越界异常。以下是方法。从 main 调用数组,随机生成 10 个元素的数组。

public static String quicky(int[] array, int a, int b)
{
int q ;
if(a<b)
{
q = partition(array,a,b) ; //Exception
System.out.println(q);
quicky(array,a,q-1) ;
quicky(array,q+1,b) ; //Exception
}
return Arrays.toString(array) ;
}
public static int partition(int[] arr, int p, int r)
{
int temp ;
int x = arr[r] ;
int i = p-1 ;
for(int j=0 ; j<arr.length-1 ; j++)
{
if(arr[j]<=x)
{
i++ ;
temp = arr[i] ;
arr[i] = arr[j] ;
arr[j] = temp ;
}
}
temp = arr[i+1] ; //Exception
arr[i+1] = arr[x] ;
arr[x] = temp ;
return i+1 ;
}

最佳答案

代码中存在一些错误,例如逐个错误和使用了错误的变量。尝试:

public static String quicky(int[] array, int a, int b)
{
int q ;
if(a<b)
{
q = partition(array,a,b) ;
quicky(array,a,q-1) ;
quicky(array,q+1,b) ;
}
return Arrays.toString(array) ;
}

public static int partition(int[] arr, int p, int r)
{
int temp ;
int x = arr[r] ;
int i = p-1 ;
for(int j=p ; j<=r-1 ; j++)
{
if(arr[j]<=x)
{
i++ ;
temp = arr[i] ;
arr[i] = arr[j] ;
arr[j] = temp ;
}
}
temp = arr[i+1] ;
arr[i+1] = arr[r] ;
arr[r] = temp ;
return i+1;
}

关于java - CLRS 算法的快速排序实现中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32487414/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com