![](/img/trans.png)
[英]Quick sort algorithm to sort the array by using the Hoare Partitioning in Java
[英]Aid with quick sort algorithm in java (netbeans)
我对编程很新,我刚开始使用java。 我的任务是使用快速排序编写程序,我设法编写它但它总是给我一个超出范围的索引。 任何人都可以看看我的代码,并通过识别我做错了什么帮助我? 谢谢
这是主类的代码。
package quicksort;
public class Quicksort {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
int[] x = {5,3,10,1,9,8,7,4,2,6,0};
quicksort_class q = new quicksort_class(x);
q.sort();
for(int i = 0; i < 11-1; i++)
{
System.out.println(x[i]);
}
}
}
这是quicksort_class的代码。
public class quicksort_class {
int[] array1 = new int[11];
public quicksort_class(int[] w)
{
array1 = w;
}
public void partitionstep(int leftlimit, int rightlimit)
{
int LPointer = leftlimit;
int RPointer = rightlimit;
Random random = new Random();
int midpoint = random.nextInt(11);
int checknumber = array1[midpoint];
while(LPointer < RPointer)
{
while(array1[LPointer] <= checknumber)
{
LPointer = LPointer + 1;
}
while(array1[RPointer] >= checknumber)
{
RPointer = RPointer --;
}
swap(LPointer, RPointer);
partitionstep(leftlimit, midpoint - 1);
partitionstep(midpoint + 1, rightlimit);
}
}
public void swap(int x, int y)
{
int temp = array1[x];
array1[x] = array1[y];
array1[y] = temp;
}
public void sort()
{
partitionstep(0, array1.length - 1);
}
}
您的midpoint
值应根据您的leftLimit
和rightLimit
计算。 它不应该是基于固定值11
的随机值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.