힙 정렬 알고리즘을 c언어로 구현을 했는데 실행결과에 오류가 계속 생깁니다ㅜㅜ
다른 정렬 알고리즘에서도 같은 출력 오류가 납니다ㅜ
#include<stdio.h>
#include<stdlib.h>
#define MAX_SIZE 100
void swap(int* a, int* b){
int temp;
temp=*a;
*a=*b;
*b=temp;
}
void adjust(int list[], int root, int n){
int child, rootkey, temp;
temp = list[root];
rootkey = list[root];
child = 2 * root+1;
while(child<=n){
if((child<n)&&(list[child]<list[child+1]))
child++;
if(rootkey>list[child])
break;
else{
list[(child-1)/2] = list[child];
child = child * 2 + 1;
}
}
list[child/2] = temp;
}
void heap_sort(int list[],int n){
int i,j;
for(i=n/2; i>0;i--)
adjust(list,i,n);
for(i = n-1;i>0;i--){
swap(&list[1],&list[i+1]);
adjust(list, 1, i);
}
}
int main(){
int list[MAX_SIZE];
int n;
int i,j;
printf("정렬을 원하는 데이터의 수를 입력해주세요.\n");
scanf_s("%d", &n);
printf_s("정렬을 원하는 데이터를 입력해주세요.\n");
for (i = 0; i < n; i++) scanf_s("%d", &list[i]);
printf("\n<정렬 전>\n");
for (i = 0; i < n; i++) printf("%d ", list[i]);
heap_sort(list, n);
printf("\n\n<정렬후>\n");
for (i = 0; i < n; i++) printf("%d ", list[i]);
printf("\n");
system("pause"); //콘솔 창을 유지하기 위함
}
실행화면
새벽동안 계속 코드랑 씨름하니까 코드 난독증이 와여