퀵 정렬 (Quick sort)

2023. 8. 18. 16:42·코테/알고리즘

퀵 정렬 이란?

기준값(pivot)을 잡고 데이터를 2개의 집합으로 쪼개어가며 정렬하는 방법이다.

시간복잡도는 평균적으로 O(NlogN)이며 최악의 경우 O(N^2)가 된다.

퀵 정렬 과정

  1. pivot 설정(사용자 마음이며 위 그림의 경우 맨 오르쪽을 pivot으로 잡음)
  2. pivot을 기준으로 다음 과정을 거쳐 2개의 집합으로 분할
    1. start 포인터가 가르키는 데이터가 pivot보다 작을 경우 start 포인터 오른쪽으로 이동, 아닌 경우 멈춤
    2. end 포인터가 가르키는 데이터가 pivot 보다 클 경우 end 포인터 왼쪽으로 이동, 아닌 경우 멈춤
    3. start 포인터와 end 포인터 모두 멈춘 경우 두 데이터 swap
    4. start 포인터와 end 포인터가 만날 때 까지 위 과정 반복
    5. start 포인터와 end 포인터가 만난 지점의 데이터와 pivot 데이터를 비교하여 pivot 데이터를 적절한 위치에 삽입 (= 2개의 집합으로 분리됨)
  3. 분리 집합에서 각각 다시 pivot 설정
  4. 각각의 분리 집합의 원소가 1개 이하가 될 때 까지 위 과정 반복

 

재귀 함수의 형태로 구현해 볼 것

저작자표시 (새창열림)

'코테 > 알고리즘' 카테고리의 다른 글

소수 판별  (0) 2023.09.16
기본 정렬 (Sort)  (0) 2023.08.16
'코테/알고리즘' 카테고리의 다른 글
  • 소수 판별
  • 기본 정렬 (Sort)
00me
00me
얼렁뚱땅 방장이 운영하는 기술 블로그
  • 00me
    영미의 iOS 다이어리
    00me
  • 전체
    오늘
    어제
    • 프로그래밍 (29)
      • 📖 (0)
      • CS (4)
      • Python (5)
      • Swift (5)
      • iOS (3)
      • 코테 (3)
        • 자료구조 (0)
        • 알고리즘 (3)
      • 회고 (9)
  • 링크

    • 🍧 GitHub
  • 인기 글

  • hELLO· Designed By정상우.v4.10.3
00me
퀵 정렬 (Quick sort)
상단으로

티스토리툴바