RecursiveSort::RecursiveSort(int myArray[], int first, int arraySize)
{
int smallest = first, j;
if (smallest < arraySize)
{
smallest = first;
for (j=first+1; j<arraySize; j++)
{
if (myArray[j] < myArray[smallest])
{
smallest = j;
}
}
swap(myArray[first], myArray[smallest]);
first++;
RecursiveSort::RecursiveSort(myArray, first, arraySize);
}
};
내 메인(); 나는 RecursiveSort sort (myArray, 0, arraySize)를 호출 할 것이다.재귀 선택 정렬 알고리즘에서 클래스 소멸자를 호출하려면 어떻게해야합니까?
arraySize> 4000 일 때 스택 오버 플로우가 발생하여 프로그램이 충돌합니다. 스택 소멸을 막기 위해 클래스 소멸자를 어딘가에 호출 할 수 있습니까? "디버그"(프로젝트 속성> 구성 관리자> 구성 풀다운 메뉴) 대신 "릴리스"를 사용해 보았습니다. 그러나 정렬에 걸리는 시간을 측정하는 데 사용되는 "TimeStamp_Lib.lib"라이브러리를 통합하려고하면 다른 문제가 발생합니다.
모든 조언/제안을 주시면 감사하겠습니다. 감사합니다.
정확히 어떻게 객체를 스택 외부의 풀로 옮길 수 있습니까? 숙제는 선택 정렬 알고리즘 2 개를 쓰는 것이고, 하나는 반복을 사용하고 다른 하나는 재귀를 사용하는 것입니다. 그래서 불행히도 스택 오버플로를 막을 수있는 방법을 찾아야 할 것입니다 : ( – billy
@billy : 함수가 클래스 생성자로 선언 된 이유는 무엇입니까? –
대신 'RecursiveSort.RecursiveSort'를 사용해야합니까? – billy