Quicksort c ++第一个元素作为pivot

时间:2015-12-19 10:58:32

标签: c++ quicksort

我有类似的东西,我希望第一个元素作为支点。 为什么这个程序仍然不起作用?

void algSzyb1(int tab[],int l,int p)
{
    int x,w,i,j;
    i=l;      //l is left and p is pivot, //i, j = counter 
    j=p;
    x=tab[l];   
    do
    {
        while(tab[i]<x) i++;
        while(tab[j]>x) j--;
        if(i<=j)
        {
            w=tab[i];
            tab[i]=tab[j];
            tab[j]=w;
            i++;
            j--;
        }           
    }
    while(!(i<j));
    if(l<j) algSzyb1(tab,l,j);
    if(i<p) algSzyb1(tab,i,p);
}

1 个答案:

答案 0 :(得分:1)

查看代码,而不是真正检查它的作用,只看单个行,这一行突出:

while(!(i<j));

我看着那条线,我想:这里的某处有一个小虫。我实际上没有查看代码,所以我不知道bug是什么,但我看这一行,看起来不对。