본문 바로가기
책/Do it! 알고리즘 코딩 테스트 자바 편

Day-6 퀵 정렬

by 댈팽이 2024. 3. 27.
728x90

1. 퀵 정렬

  • 기준값(pivot)을 선정해 해당 값을 기준으로 정렬하는 방식이다.
  • 기준값 선정 방식이 시간 복잡도에 많은 영향을 준다.
  • 평균 시간 복잡도는 O(nlogn)이다.
  • pivot을 중심으로 작은 데이터와 큰 데이터로 나누면서 정렬한다.

2. 퀵 정렬 과정

  1. pivot을 설정
  2. pivot을 기준으로 다음 과정을 거쳐 데이터를 2개의 집합으로 분리
    - start가 pivot보다 작으면 start 1 증가
    - end가 pivot보다 크면 end 1 감소
    - start가 pivot보다 크고 end가 pivot보다 작으면, start와 end를 swap하고 start 1 증가, end 1 감소
    - start와 end가 만날 때까지 반복
    - start와 end가 만나면 pivot을 삽입. 만난 지점의 값보다 pivot이 크면 만난 지점의 오른쪽에, 작으면 만난 지점의 왼쪽에 pivot을 삽입
  3. 분리 집합에서 각각 pivot을 설정
  4. 분리 집합이 1개 이하가 될 때까지 1~3을 반복

3. 예제 문제

 

[24090] 알고리즘 수업 - 퀵 정렬 1 (JAVA)

# 문제 설명 오늘도 서준이는 퀵 정렬 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. N개의 서로 다른 양의 정수가 저장된 배열 A가 있다. 퀵

spicyrisotto.tistory.com

728x90

' > Do it! 알고리즘 코딩 테스트 자바 편' 카테고리의 다른 글

Day-7 기수 정렬  (0) 2024.03.27
Day-7 병합 정렬  (0) 2024.03.27
Day-6 삽입 정렬  (0) 2024.03.26
Day-5 선택 정렬  (0) 2024.03.23
Day-5 버블 정렬  (0) 2024.03.22