快速排序分区

时间:2014-04-25 11:16:02

标签: java algorithm sorting quicksort partitioning

我正在尝试使用算法"算法"然而,在Sedgewick,在我正在阅读的书中,它询问算法如何使用以下String项对数组进行分区:

k        1    2     3     4          5          6      7       8        9
arr[k]   dog  cat   cow   elephant   goldfish   horse  tiger   giraffe  panda 

使用方法调用分区(0, 8, "elephant")

阵列已经分区并排序了吗?如果有人能向我解释这一点,我将非常感激。

这是他使用的分区方法:

void partition(int L0, int R0, String p)
{
   L = L0;
   R = R0;
   while ( L <= R )
   {
       // left scan
       while ( lt(arr[L], p) )
       {
         comps = comps + 1;
         L = L + 1;
        }
       comps = comps + 1; 
       // right_scan
       while ( lt(p, arr[R]) )
       {
         comps = comps + 1;
         R = R - 1;
       }
       comps = comps + 1;  
       if ( L <= R )
       {
           exchange(L,R);
           exchs = exchs + 1;
           L = L + 1;
           R = R - 1;
        }
    }
} // partition

1 个答案:

答案 0 :(得分:0)

数组未按值排序(arr [k])。它需要按值排序,而不是索引