2016-01-21 32 views
0

我在做QuickSort,但我得到bad_alloc()error.Sometimes代碼運行完美,但有一次我得到錯誤。該程序運行完美,做排序的權利,但只有當它運行,但s 4次,這是給我錯誤的_alloc錯誤。 所以有什麼問題???????在QuickSort壞分配

#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); 
     } 
     } 
    } 

回答

3

移動的聲明

a = new int[j]; 

cin>>j; 

你用 「垃圾」 爲J分配後才能在任何地方堆棧存儲器位置具有值!

+0

此時'j'未初始化爲一個不確定的值。 – 1201ProgramAlarm