Witam.
Mam problem z badaniem algorytmów dla dużej ilości danych, prawdopodobnie błąd jest w jednej z moich funkcji, niestety nie potrafię ich zidentyfikować. Weźmy np. gotowy algorytm sortowania szybkiego ze strony:
http://pl.wikisource.org/wiki/Sortowanie_szybkie/kod#C.2B.2B
Wykonuję:
int* NewTab=utworzTab(rozmiar);
WypelnTabliceLos(NewTab,rozmiar);
Quicksort(NewTab,0,rozmiar-1);
Funkcje których używam:
int* utworzTab(int dlugosc){
int* tablica= new int[dlugosc];
return tablica;
}
void WypelnTabliceLos(int *tablica, int rozmiar){
int ograniczenie=20;
for (int i=0;i<rozmiar;i++){
tablica[i]=rand()%ograniczenie;
}
}
Nie wiem dlaczego, ale algorytmy przestają działać powyżej 30-50 tysięcy elementów tablicy, np. sortowanie szybkie działa dla 50k, ale dla 100k już nie. Pojawia się wyjątek stack overflow albo bad_alloc.
Proszę o wskazówki jak rozwiązać problem, myślałem że chodzi tu o limit inta, ale wtedy wszystko zatrzymywałoby się na 32768 a tak nie jest. Próbowałem zresztą użyć zmiennych typu unsigned long int, nic to nie dało.