我正在做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);
}
}
}
答案 0 :(得分:3)
移动声明
a = new int[j];
后
cin>>j;
您正在使用“垃圾”进行分配,因为j取得了本地堆栈内存位置中的值!