Linux C ++上Quick Sort程序中的分段错误

时间:2013-10-05 10:07:27

标签: c++ segmentation-fault quicksort

我不明白为什么我在运行此代码时为尾部> 20000获得'分段错误'...第一部分是好的,我可以声明具有20k位置的向量但是当它传递给递归函数时我收到这个错误...谢谢你的帮助!

#include <iostream>
#include <stdlib.h>

using namespace std;

long int pivoter(long int V[],long int k,long int debut,long int fin);

int main()
{

    long int vmax,i,taille,k,u,*vet;

    cout << "Entrer la quantite de valeurs" << endl;
    cin>>taille;
    cout << "Entrer la valeur maximale" << endl;
    cin>>vmax;

    vet = new long int[taille];

    for (i=0;i<taille;i++)
    {
        vet[i]=1+lrand48()%(vmax);
    }

    k=pivoter(vet,0,0,taille-1);

    delete[] vet;

    return 0;
}



long int pivoter(long int V[],long int k,long int debut,long int fin)
{
    long int a,c,p,s,ct;
    a=V[k];
    V[k]=V[fin];
    V[fin]=a;

    s=debut;

    for (p=debut;p<(fin+1);p++)
    {
        if (V[p]<V[fin])
        {
            a=V[p];
            V[p]=V[s];
            V[s]=a;
            s=s+1;
        }
    }

    a=V[fin];
    V[fin]=V[s];
    V[s]=a;
    k=s;
    if (k>debut)
    {
        k=pivoter(V,debut,debut,k-1);
    }

    if (k<fin)
    {
        k=pivoter(V,k+1,k+1,fin);
    }

    return s;
}

0 个答案:

没有答案