我正在尝试使用算法"算法"然而,在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
答案 0 :(得分:0)
数组未按值排序(arr [k])。它需要按值排序,而不是索引