Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 快速排序算法中的排序_Java_Arrays_Algorithm_Sorting - Fatal编程技术网

Java 快速排序算法中的排序

Java 快速排序算法中的排序,java,arrays,algorithm,sorting,Java,Arrays,Algorithm,Sorting,这是我在快速排序算法中对列表或数组进行排序的程序数组中间的枢轴如何可以随机选择枢轴?我可以使用什么算法通过快速排序(随机)对数组进行排序 publicstaticinta[]={1,3,5,4,6,2,7}; 公共静态void main(字符串[]args){ qs(a,0,6); 对于(int p=0;pa[x]) j=j-1; if(i

这是我在快速排序算法中对列表或数组进行排序的程序数组中间的枢轴如何可以随机选择枢轴?我可以使用什么算法通过快速排序(随机)对数组进行排序

publicstaticinta[]={1,3,5,4,6,2,7};
公共静态void main(字符串[]args){
qs(a,0,6);
对于(int p=0;pa[x])
j=j-1;
if(i

Math.random
给出一个从0.0到1.0的随机双精度。将其乘以间隔的长度,然后再加上间隔的开始部分,就得到了间隔中的一个随机数。

我能观察到的第一件事是,您的算法并不总是正确的,请检查此测试用例:

{ 2, 3, 5, 3, 5, 1, 7 }
您的输出是:

after sort1
after sort2
after sort3
after sort5
after sort3
after sort5
after sort7
我认为您应该更新
I
j
,即使它们相等,因为您不希望分区重叠,然后您可以将第二个递归调用更改为更符合逻辑的调用:

if (i < l)
  qs(a, i, l);
if(i

对于random,您可以使用@jeremy bentham提出的解决方案,还可以检查java.util.random类。

我删除了
C++
标记,因为这显然是关于Java1的)为了更快地获得更好的帮助,发布一篇文章。2)对代码块使用一致的逻辑缩进。代码缩进的目的是帮助人们理解程序流程。我不太理解您的问题。实现是否不起作用,或者您试图实现什么?您对
的意思是什么?如何随机选择轴心>?AFAIK quicksort在每个(子)数组中都有一个定义的轴心位置。1)我忘记了代码中的
-1
,正如建议的那样,您应该更正算法
after sort1
after sort2
after sort3
after sort5
after sort3
after sort5
after sort7
if (i < l)
  qs(a, i, l);