分区方法帮忙!用于Quicksort方法

时间:2013-09-12 20:08:24

标签: java sorting partitioning quicksort

我需要帮助弄清楚这个分区代码到底出了什么问题。我现在已经挣扎了几天,似乎无法绕过它。

pIdx是数据透视索引,左边和右边是数组的边界整数选项,数组a只是一个数组或存储的长值。

protected static int partition(long[] a, int left, int right, int pIdx) { 
    //long numbers[] = {4,3,8,9,7,2,1,5};

    long pivot = a[pIdx];
    swap(a, pIdx, right);
    int storeIndex = left;
    for(int i=left; i<right; i++) {
        if(a[i] <= pivot)
            swap(a, i, storeIndex);

    }//for
    swap(a, right, storeIndex);
    return storeIndex;
}//partitio

1 个答案:

答案 0 :(得分:1)

我尝试修复你的代码。看看这是否适合你。

protected static int partition(long[] a, int left, int right, int pIdx) { 
    //long numbers[] = {4,3,8,9,7,2,1,5};
    long pivot = a[pIdx];
    swap(a, pIdx, right);
    int storeIndex = left;
    for(int i=left; i<right; i++) {
        if(a[i] < pivot) {
            swap(a, i, storeIndex);
            storeIndex = storeIndex + 1;
        }
    }
    swap(a, storeIndex, right);
    return storeIndex;
}