Programing/Algorithm

퀵 정렬(Quick Sort) (javascript)

2016. 5. 31. 12:29
반응형

퀵 정렬은 찰스 앤터니 리처드 호어가 개발한 정렬 알고리즘으로 다른 원소와의 비교만으로 정렬을 수행하는 비교 정렬이다.




난수열에 대해 퀵 정렬을 실행한 그림.
수평선은 피벗 값을 가리킨다.


퀵 정렬은 분할 정복(divide and conquer) 방법을 통해 리스트를 정렬한다.

  1. 리스트 가운데서 하나의 원소를 고른다. 이렇게 고른 원소를 피벗이라 한다.
  2. 피벗 앞(left)에는 피벗보다 값이 작은 모든 원소들이 오고, 피벗 뒤(right)에는 피벗보다 값이 큰 모든 원소들이 오도록 피벗을 기준으로 리스트를 둘로 나눈다.
    이렇게 리스트를 둘로 나누는 것을 분할이라 한다. 분할을 마친 뒤에 피벗은 더 이상 움직이지 않는다.

  3. 분할된 두 개의 작은 리스트에 대해 재귀(Recursion)적으로 이 과정을 반복한다. 재귀는 리스트의 크기가 0이나 1이 될 때까지 반복된다.

재귀 호출이 한번 진행될 때마다 최소한 하나의 원소는 최종적으로 위치가 정해지므로, 이 알고리즘은 반드시 끝난다는 것을 보장할 수 있다.


상세한 알고리즘 설명은 위키에서 잘 정리되어 있으니 링크에서 확인하고, 아래 javascript로 구현된 예제를 확인하자.


반응형
저작자표시 비영리 동일조건 (새창열림)

'Programing > Algorithm' 카테고리의 다른 글

jvascript array 경우의 수 구하기 (permute)  (0) 2022.02.15
LRU Cache (Least Recently Used) / 프로그래머스 캐시  (0) 2022.01.19
콜라츠 추측  (0) 2021.08.27
하샤드의 수 (Harshad Number)  (0) 2021.08.25
덧셈 뺄셈 동적 계산 (dynamic plus minus, Dynamic addition and subtraction)  (0) 2019.07.19
주민등록번호 체계 및 유효성 검사 (javascript)  (2) 2016.10.07
재귀 함수를 이용한 거듭제곱 (a의 n승) (javascript)  (0) 2016.05.18
에라토스테네스의 체를 이용한 소수 찾기  (0) 2016.05.17
'Programing/Algorithm' 카테고리의 다른 글
  • 덧셈 뺄셈 동적 계산 (dynamic plus minus, Dynamic addition and subtraction)
  • 주민등록번호 체계 및 유효성 검사 (javascript)
  • 재귀 함수를 이용한 거듭제곱 (a의 n승) (javascript)
  • 에라토스테네스의 체를 이용한 소수 찾기
Dongkkase
Dongkkase
개발자로 일하면서 부딪히는 문제풀이가 누군가에게 도움이 되길 바라며
    반응형
  • Dongkkase
    정집사의 개발로그
    Dongkkase
  • 전체
    오늘
    어제
    • All (478)
      • 금융 (61)
      • Programing (295)
        • Algorithm (39)
        • API (2)
        • javascript (122)
        • CSS (8)
        • HTML (10)
        • PHP (15)
        • JAVA (27)
        • JSP (17)
        • JSP 예제 (1)
        • IOS (1)
        • Android (1)
        • Sencha Touche (1)
        • bat file, cmd (0)
        • 디버깅 (2)
        • SQL (21)
        • MS-SQL (1)
        • MySQL (13)
        • 보안 (5)
      • Server (14)
        • Docker (1)
        • Windows (9)
        • Linux (3)
        • jeus (1)
      • Database (6)
      • IT 일반 (15)
      • 리뷰 (38)
        • Book (17)
        • 제품 (2)
        • 영화 소개 (11)
        • 음악 소개 (7)
      • 잡생각 (36)
        • 회고 (3)
        • 컬럼 (4)
        • 자료실 (6)
        • 낙서장 (12)
        • 위시리스트 (2)
        • WOW (1)
        • 덕 (1)
  • 인기 글

  • 최근 댓글

  • 태그

    블로그
    자바스크립트유틸
    위시리스트
    iT's MY LiFE
    자바
    SQL
    js패턴
    IT·컴퓨터
    기초
    사고 싶은 책
    It
    Java
    IT 관련
    php
    JavaScript
    IT블로그
    디자인패턴
    jsp
    읽고 싶은 책
    자바스크립트
Dongkkase
퀵 정렬(Quick Sort) (javascript)
상단으로

티스토리툴바