알고리즘을 공부하다 약간 헷갈리는 개념을 접해 정리해보고자 합니다.
private static int partition(int[] A, int start, int end) {
...
int pivot = A[start]; // 5
...
int temp = pivot;
pivot = A[high]; // 3
A[high] = temp;
...
}
private static int partition(int[] A, int start, int end) {
...
int pivot = A[start];
...
int temp = A[start];
A[start] = A[high];
A[high] = temp;
...
}
저번에 포스트로 정리 했던 https://velog.io/@dainel/Call-By-Value-Call-By-Reference 랑 연관이 있다고생각해 지난 포스트를 살펴보았는데
약간 설명이 빈약하고 위 케이스와는 좀 달라보여 다시한번 자료를 찾아보았습니다.
이해를 돕기위해 가상의 배열로 진행해보겠습니다.
A = 1, 2, 3, 4, 5 의 배열
int pivot = A[0]
: pivot에 A[start]
의 값이 할당됩니다.int temp = pivot
: temp에 복사된 pivot의 값이 할당됩니다.pivot = A[1]
: pivot에 A[high]
의 값이 할당됩니다.A[1] = temp
: A[1]
에 temp의 값이 할당됩니다.A[1]
= 1int pivot = A[0]
: pivot에 복사된 A[0]
의 값이 할당됩니다.A[0]
의 값)int temp = A[0]
: temp에 복사된 A[0]
의 값이 할당됩니다.A[0]
의 값), temp = 1(복사된 A[0]
의 값)A[0] = A[1]
: A[0]
에 복사된 A[1]
의 값이 할당됩니다.A[0]
의 값), temp = 1(복사된 A[0]
의 값), A[0]
= 2(복사된A[1]
의 값)A[1] = temp
: A[1]
에 복사된 temp의 값이 할당됩니다.A[0]
의 값), temp = 1(복사된 A[0]
의 값), A[0]
= 2(복사된A[1]
의 값), A[1]
= 1(복사된 temp의 값)위 결과 값이 다르게 나온걸 확인하실 수 있습니다.
자바는 기본데이터 타입이 인자로 전달되는 경우 Call by value(값에 의한 호출) 로 처리되기 때문인데요.
필자가 작성한 포스트의 주제에 부합하는 내용이였네요...정리해 놓고 잘 모르는것 같아 부끄럽네요.
이번기회를 통해 다시한번 배웠으니 이젠 위 개념에 대해 조금 더 알았다고 생각하겠습니다.
추가적인 개념이나 피드백있으시면 댓글 부탁드리겠습니다!