💻
ComputerScience
  • 목차
  • Operating System
    • 운영체제란
    • 프로세스 vs 스레드
    • 프로세스 주소 공간
    • 인터럽트(Interrupt)
    • 시스템 콜(System Call)
    • PCB와 Context Switching
    • IPC(Inter Process Communication)
    • CPU 스케줄링
    • 데드락(DeadLock)
    • Race Condition
    • 세마포어(Semaphore) & 뮤텍스(Mutex)
    • 페이징 & 세그먼테이션
    • 페이지 교체 알고리즘
    • 메모리(Memory)
    • 파일 시스템
  • Network
    • OSI 7 계층
    • TCP 3 way handshake & 4 way handshake
    • TCP/IP 흐름제어 & 혼잡제어
    • UDP
    • 대칭키 & 공개키
    • HTTP & HTTPS
    • TLS/SSL handshake
    • 로드 밸런싱(Load Balancing)
    • Blocking,Non-blocking & Synchronous,Asynchronous @LifesLike
    • Blocking & Non-Blocking I/O
  • Algorithm
    • 거품 정렬(Bubble Sort)
    • 선택 정렬(Selection Sort)
    • 삽입 정렬(Insertion Sort)
    • 퀵 정렬(Quick Sort) @mimwin
    • 병합 정렬(Merge Sort)
    • 힙 정렬(Heap Sort)
    • 기수 정렬(Radix Sort)
    • 계수 정렬(Count Sort)
    • 이분 탐색(Binary Search)
    • 해시 테이블 구현
    • DFS & BFS @sujin-kk
    • 최장 증가 수열(LIS)
    • 최소 공통 조상(LCA)
    • 동적 계획법(Dynamic Programming)
    • 다익스트라(Dijkstra) 알고리즘
    • 비트마스크(BitMask)
  • Database
    • 키(Key) 정리
    • SQL - JOIN
    • SQL Injection
    • SQL vs NoSQL
    • 정규화(Nomalization)
    • 이상(Anomaly)
    • 인덱스(INDEX)
    • 트랜잭션(Transaction)
    • 트랜잭션 격리 수준(Transaction Isolation Level)
    • 저장 프로시저(Stored PROCEDURE)
    • 레디스(Redis) @sujin-kk
  • Java
    • Java 컴파일 과정
    • Call by Value vs Call by Reference
    • String & StringBuffer & StringBuilder
    • 자바 가상 머신(Java Virtual Machine)
    • Casting(업캐스팅 & 다운캐스팅)
    • 오토 박싱 & 오토언박싱
    • Thread 활용
    • 고유 락(Intrinsic Lock)
    • 문자열 클래스
    • Garbage Collection
    • Promotion & Casting
    • Primitive type & Reference type
    • 직렬화(Serialization)
    • Error & Exception
    • Stream API
    • Record
    • Composition
Powered by GitBook
On this page
  • 시간복잡도
  • 힙
  • 특징
  • 알고리즘(오름차순)
  1. Algorithm

힙 정렬(Heap Sort)


시간복잡도

최선
평균
최악

nlogn

nlogn

nlogn

힙

  • 완전 이진 트리

  • 우선순위 큐에 활용

  • 최댓값, 최솟값을 쉽게 추출

  • 최소 힙

    • 부모 노드의 값이 자식 노드의 값보다 작거나 같음

    • 내림차순 정렬에 활용

  • 최대 힙

    • 부모 노드의 값이 자식 노드의 값보다 크거나 같음

    • 오름차순 정렬에 활용

  • 삽입할 때는 마지막 인덱스에 삽입 삭제할 때는 루트 노드 삭제

특징

  • 시간복잡도가 좋다

    • 힙이 완전 이진 트리이기 때문에 높이는 logn이고 하나의 요소를 힙에 넣거나 뺄 때, logn의 시간 소요

    • nlogn

  • 공간복잡도

    • n개의 요소를 담고 있는 배열 안에서도 가능

    • n

  • 자료 전체가 아닌 가장 큰(작은) 값 몇 개를 구할 때 유용

  • 불안정 정렬

알고리즘(오름차순)

  • 힙의 루트 노드엔 항상 최대값이 있음을 활용

  1. 최대 힙을 구성

  2. 루트 노드와 마지막 노드와 교환

  3. 마지막 노드 제거하여 배열의 뒤에 넣음

  4. 1~3번 반복

Previous퀵 정렬(Quick Sort) @mimwinNext기수 정렬(Radix Sort)

Last updated 2 years ago

출처