게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
[C언어]정렬 알고리즘 - 힙정렬
게시물ID : programmer_14880짧은주소 복사하기
작성자 : 김길환
추천 : 0
조회수 : 2013회
댓글수 : 6개
등록시간 : 2015/12/09 07:59:40
옵션
  • 본인삭제금지
힙 정렬 알고리즘을 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"); //콘솔 창을 유지하기 위함
}
 

실행화면
캡처.PNG
 
 
새벽동안 계속 코드랑 씨름하니까 코드 난독증이 와여

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호