void doSomething(int *a, int left, int right){
if (left == right){
for (int j = 0; i < right; ++j)
cout << a[j];
cout << endl;
return;
}
for (int i = left; i < right; ++i){
std::swap(a[left], a[i]);
doSomething(a, left + 1, right);
std::swap(a[left], a[i]);
}
}
"기본 사건이 T (1) = right라고 가정하고, 스왑 함수가 O에서 두 개의 인수 값을 교환한다고 가정합니다. 1) 시간이고 반복 관계의 경우 T (n), n = right-left + 1이라고합시다. "알고리즘의 반복 관계
위에서 주어진 코드의 반복 관계를 찾도록 요청 받았습니다. 첫 번째 'if'문은 단지 == right가 될 때마다 배열의 내용을 단순히 출력한다는 결론을 내릴 수있었습니다. 맨 아래 부분은 반복적 인 문장이지만 복잡성을 분석하는 방법을 알지 못합니다. 어떤 도움을 주시면 감사하겠습니다!
먼저 문제에 대한 직감을 개발해야합니다. 방법? 디버거에서'1,2,3,4, ..., n '으로 지정된 데이터를 가리키는'int *'를 전달하고'left'와' 맞아. 디버거를 사용하여 어떤 일이 발생하는지 확인하십시오. 그리고 이것은 관련성이 없지만 교수님의 문제가 마음에 듭니다. – druckermanly
반복 관계를 찾는 것은 복잡성 분석과 다릅니다 ... http://en.wikipedia.org/wiki/Recurrence_relation을 참조하십시오. – amdn
나는 'n = 1,2,3 , 4'는 문제에 대한 직감을 얻으려고 노력한다. 하지만 누군가가 어쨌든 숙제를 해결해 준 것 같습니다. :) – druckermanly