• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

DFS 함수 선언

21.07.07 14:49 작성 조회수 117

0

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <stack>

int a[101],n;
int tmp[101]; 

using namespace std;

void merge(int start, int end){
if(start >= end) return;
else	{
	int mid = (start+end)/2;
	merge(start,mid);
	merge(mid+1,end);

	int i = start;
	int j = mid+1;
	int k = start;

	while (i <= mid && j <= end){
	if(a[i] <= a[j]) tmp[k++] = a[i++];
	else tmp[k++] = a[j++];
	}
	if(i <= mid) {
		while(i<=mid){
			tmp[k++] = a[i++];
		}
	}
	else if (j<= end){
		while(j<= end){
			tmp[k++] = a[j++];
		}
	}
	for (int t = start; t <= end; t++){
		a[t] = tmp[t];
	} 

}
}
int main(){
int n;
scanf("%d",&n);
for(int i = 1; i <= n; i++){
	scanf("%d",&a[i]);
}

merge(1,n);

	for (int t = 1; t <= n; t++){
	printf("%d ",tmp[t]);
}

return 0;
}
함수를 선언할 때 선생님께서는 merge(a,1,n)으로 배열까지 앞에 넣어 선언했는데 저는 merge(1,n)으로 해도 실행이 되었습니다.
앞에 배열을 넣어주는 특별한 이유가 있나요?

답변 1

답변을 작성해보세요.

0

안녕하세요^^

특별한 이유없습니다. 그냥 매개변수로 넘겨서 짠 것이겠지요.

김혁수님의 프로필

김혁수

질문자

2021.07.12

감사합니다.