#include<stdio.h> #include<stdlib.h> void build_max_heap_up(int A[], int n); int main(void) { int i; int A[5] = {1,2,4,5,3 }; build_max_heap_up(A, 3); for (i = 0; i < 5; i++) { printf("%d ", *(A+i)); } } void build_max_heap_up(int A[], int n) { int i = (n - 2) / 2; //부모 int left = 2 * i + 1; //자식왼쪽노드 int right = 2 * i + 2; //자식오른쪽노드 int tmp; if (A[left] && A[right]) { //자식 왼쪽과 오른쪽이 있다면 if (A[left] > A[i]) { //왼쪽노드가 부모보다 크면 변경 tmp = A[i]; A[i] = A[left]; A[left] = tmp; } if (A[right] > A[i]) { //오른쪽노드가 부모보다 크면 변경 tmp = A[i]; A[i] = A[right]; A[right] = tmp; } } else { //왼쪽노드는 무조건있다고 가정 오른쪽노드가 없다면 if (A[left] > A[i]) { tmp = A[i]; A[i] = A[left]; A[left] = tmp; } } if (A[n]) { //A[n](다음 왼쪽자식노드)이 존재한다면 build_max_heap_up(A, n+2); //다음 build하러감 } } 제가 힙정렬을 살짝 응용하여서 코딩을 했는데 여기에서 main함수안에 있는 int A[5]={1,2,4,5,3};부분이 A[6]으로 바뀌면 Debug Error가 안뜨는지 이유를 모르겠습니다. 그리고 A[5]로 Debug Error를 못뜨게 하는 방법이 있는지 궁금합니다. 그리고 A배열의크기=sizeof(A)/sizeof(int)이것을 build_max_heap_up에 매개변수에 들어가지 않고 A배열의 크기를 넣는 방법이 있는지 궁금합니다ㅜㅜ....