gpt4 book ai didi

java - java中的递归快速排序

转载 作者:行者123 更新时间:2023-11-30 02:39:20 26 4
gpt4 key购买 nike

这是我的快速排序代码。它给了我一个错误的答案,但我认为我的分区函数是正确的。

public class Quick_Sort {

public static void main(String[] args)
{

int a[] = {99,88,5,4,3,2,1,0,12,3,7,9,8,3,4,5,7};
quicksort(a, 0, a.length-1);
}

static int partition(int[] a, int low , int hi)
{
int pivot = hi;
int i =low;
int j = hi-1;
while(i<j)
{
if(a[i]<=a[pivot])
{
i++;
}
if(a[i]>a[pivot])
{
if((a[i]>a[pivot]) && (a[j]<=a[pivot]))
{
int temp= a[i];
a[i]=a[j];
a[j]=temp;
i++;
}
if(a[j]>a[pivot])
{
j--;
}
}
}
int temp= a[i];
a[i]=a[pivot];
a[pivot]=temp;
return i;
}
static void quicksort(int[] a, int low, int hi)
{
if(low>=hi)
{
return;
}
int split = partition(a, low, hi);
quicksort(a, low, split-1);
quicksort(a, split+1, hi);
}
}

这是最终的输出:

1 0 3 2 3 4 4 5 5 7 3 7 8 9 12 88 99

尝试空运行它,看不到错误

最佳答案

在您的 partition 方法中,您已将 j 分配给 hi - 1。应仅将其设置为 hi

static int partition(int[] a, int low , int hi)
{
int pivot = hi;
int i =low;
// int j = hi-1; // CHANGE THIS TO
int j = hi; // THIS
while(i<j)
<小时/>

进行更改后,我得到了以下输出:

[0, 1, 2, 3, 3, 3, 4, 4, 5, 5, 7, 7, 8, 9, 12, 88, 99]
<小时/>

希望这有帮助!

关于java - java中的递归快速排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42243597/

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