2016-01-21 2 views
0

Я делаю QuickSort, но я получаю ошибку bad_alloc(). Иногда код работает отлично, но некоторое время я получаю ошибку. Программа работает отлично и делает сортировку правильно, но только тогда, когда она запущена, но s из 4-х раз это дало мне ошибку _alloc. так в чем проблема ???????bad alloc in 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

Смежные вопросы