2-0) [C]힙(Heap)

2021. 11. 8. 22:39·Algorithm/백준

1) 힙이란?

힙이라는 데이터 구조를 사용하여 정렬하는데, 최소값이나 최대값을 찾는데 최적화되어있는 완전이진트리 형태의 자료구조이다.

 

1. 힙에 모든 숫자를 내림차순으로 저장

2) 힙의 시간복잡도

삽입정렬에서는 각 라운드의 첫 숫자를 그 왼쪽에 있는 숫자와 비교한다. 만약 왼쪽에 있는 숫자가 작다면 교체가 발생하지 않고 라운드를 종료한다.

하지만 꺼낸 숫자가 정렬 완료 영역의 숫자보다 작을 때는 그 숫자가 가장 왼쪽에 도착할 때까지 비교와 교체 작업을 한다. k라운드에서는 k-1회씩 작업한다. 따라서 최악의 경우에는 2라운드에서 1회, 3라운드에서 2회, ..., n라운드에서 n-1회의 비교와 교체가 발생하므로 계산 시간이 버블 정렬이나 선택 정렬과 같이  O(n^2)이다. 그리고 최악의 입력 데이터는 마찬가지로 역순으로 나열된 경우이다.

 

3) 힙 구현

#include <stdio.h>

int main(void){
  int data[6] = {5, 2, 3, 6, 4, 1};
  int keyValue;
  int j;
  printf("Before sorting :\n");
  
  for(int i =0; i<6;i++){
    printf("%d",data[i]);
  }
  printf("\n");
  for(int i=0; i<5;i++){ 
      keyValue=data[i+1];
      for(j=i;j>=0;j--){ //keyValue 앞의 숫자들 확인
          if(data[j]>keyValue){ 
              data[j+1]=data[j];
          }
          else{
              break;
          }
        }
        data[j+1]=keyValue;
    } 
        
  printf("After sorting :\n");
  for(int i=0; i<6;i++){
      printf("%d",data[i]);
  }
  
  return 0;
  }

결과화면

Before sorting :
523641
After sorting :
123456

 

 

 

반응형
'Algorithm/백준' 카테고리의 다른 글
  • 2-3) [C] 퀵정렬(Quick Sort)
  • 2-2)[C] 병합 정렬(Merge Sort)
  • 2-1) [C] 힙 정렬(Heap Sort)
  • 1-3) [C]삽입정렬(Insertion Sort)
수영하는 두루미
수영하는 두루미
한국체육대학교에서 스포츠 AI빅데이터를 공부하고 있습니다. B.S. Computer Science
  • 수영하는 두루미
    두루미의 스포츠 데이터분석실
    수영하는 두루미
  • 전체
    오늘
    어제
    • 분류 전체보기 (94)
      • 스포츠 AI·빅데이터(2024~) (21)
        • 2024-2 (0)
        • 빅데이터기반 스포츠경기분석 (10)
        • 스포츠와 소셜텍스트분석 (4)
        • 영상기반 데이터 수집기법 (3)
        • 2025-1 (0)
        • 스포츠와 AI 모델링 기초 (0)
        • 스포츠와 프로그램 코딩(Python) (0)
        • 운동역학 (0)
        • 2025-2 (0)
        • 스포츠 AI빅데이터 연구 세미나 (1)
        • 스포츠 딥러닝 (0)
        • 운동생리학 (0)
        • etc. (0)
      • Data (13)
        • ADsP (1)
        • SQLD (1)
        • 빅데이터분석기사 (4)
        • ADP(데이터분석 전문가) (5)
        • 키다리아저씨(2021.12.05~) (2)
        • 파이썬 자격과정(2021.07.22-23) (0)
      • 정보처리기사 (1)
      • CSTS (10)
      • 블록체인과 암호화폐 (0)
        • 블록체인 (0)
      • Algorithm (44)
        • 백준 (42)
        • 자료구조 (2)
      • CSOS (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Python
    스포츠데이터분석
    빅데이터분석기사
    한체대대학원
    알고리즘
    한체대
    동적테스트
    스포츠빅데이터
    자료구조
    heapsort
    명세기반테스트
    구조기반테스트
    스포츠데이터
    csts
    C언어
    경험기반테스트
    스포츠ai빅데이터
    정적테스트
    백준
    데이터분석
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
수영하는 두루미
2-0) [C]힙(Heap)
상단으로

티스토리툴바