Algorytmy przestają działać dla dużej ilości danych.

0

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.

0

Tyś widział inta i 32768 ;]
Szklana kula mówi mi że w ustawieniach kompilatora masz jakis bardzo bardzo mały stos ustawiony i stąd problem bo to jednak funkcja rekurencyjna i trochę stosu potrzebuje. Zwiększ stos i spróbuj ponownie.

0

Jakis 16 bitowy kompilator?

1 użytkowników online, w tym zalogowanych: 0, gości: 1