QuickSort中的错误分配

时间:2016-01-21 03:52:40

标签: c++

我正在做QuickSort但是我得到了bad_alloc()错误。有时代码运行完美但有时候我得到错误。程序运行完美并且排序正确但只有当它运行但是超过4次它给了我糟糕的_alloc错误。 那有什么问题????????

#include <iostream>
using namespace std;
void quicksort(int *a,int,int);
int main()
{
int i,j,*a;
a = new int[j];
cout<<"Enter the total element:";
cin>>j;
for(i=0;i<j;i++){
    cout<<"Enter element:";cin>>a[i];
}
quicksort(a,0,j-1);
cout<<"After sorting."<<endl;
for(i=0;i<j;i++){
    cout<<a[i]<<endl;
}
return 0;
}
void quicksort(int *a,int u,int d){
    int key = a[u];
    int upper = u;
    int lower = d;
    while(key>a[u] && u<lower){
        u++;
    }
    while(key<a[d] && d>upper){
        d--;
    }
    if(u<d){
    swap(a[u],a[d]);
    quicksort(a,upper,lower);
    }
    if(u>=d){
        swap(key,a[d]);
        if(upper!=d)
        {
        quicksort(a,upper,d-1);
        }
        if(d!=lower)
        {
        quicksort(a,d+1,lower);
        }
      }
   }

1 个答案:

答案 0 :(得分:3)

移动声明

a = new int[j];

cin>>j;

您正在使用“垃圾”进行分配,因为j取得了本地堆栈内存位置中的值!