繁体   English   中英

在java(netbeans)中使用快速排序算法

[英]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值应根据您的leftLimitrightLimit计算。 它不应该是基于固定值11的随机值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM