gpt4 book ai didi

java - 为什么我的快速排序代码不起作用?

转载 作者:行者123 更新时间:2023-12-01 13:36:40 24 4
gpt4 key购买 nike

任何人都可以帮助我完成快速排序代码,因为当我向它提供数据时它不会被执行。

我没有得到任何答复。就好像它进入无限循环或类似的东西。

public class Provo {

public static void swap(int[] a, int i, int j)
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}

public static int HoarePartition(int m , int d, int[] a)
{ int pivot=a[m];
int i=m;
int j=d;

while(i<j)
{
while(a[i]<pivot)
{i=i+1;}

while(a[j]>pivot)
{j=j-1;}

if(i<j)
swap(a,i,j);
}
swap(a,m,j);

return j;
}

public static void quicksort(int m, int d, int[] a)
{
if (m<d)
{ int s=HoarePartition(m,d,a);
quicksort(m,s-1,a);
quicksort(s+1,d,a);
}
}
}

最佳答案

这部分可能有问题:

if(i<j)
swap(a,i,j);

a[i]a[j]都等于主元元素时会发生什么?这意味着它们将被交换,但 lohi 都不会递减,从而导致无限循环。

试试这个:

if(i<j)
swap(a,i++,j--);

这基本上会进行后递增/递减,确保每次迭代后 lohi 变得更接近。

关于java - 为什么我的快速排序代码不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21220270/

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