정렬 (Sort) - 퀵정렬

2024. 7. 16. 23:14·Algorithm

퀵정렬이란?

  • 퀵정렬(Quick Sort)은 또 다른 분할 정복 알고리즘,
  • 배열을 하나의 피벗(pivot)을 기준으로 두 개의 부분 배열로 나누고 각각을 정렬하여 전체 배열을 정렬하는 방식.
  • 퀵정렬은 평균적으로 매우 빠른 정렬 알고리즘 중 하나로 알려져 있음

퀵정렬 요약

특징  - 분할 정복 알고리즘
- 불안정 정렬
- 재귀적 접근
- 피벗 선택 중요
장점  - 평균적으로 매우 빠름
- 추가 메모리 공간이 거의 필요 없음(제자리 정렬)
단점  - 최악의 경우 O(n^2)의 시간복잡도
- 피벗 선택에 따라 성능이 좌우됨
시간복잡도  - 최선: O(n log n)
- 평균: O(n log n)
- 최악: O(n^2)
공간복잡도  - O(log n) (재귀 호출 스택 공간)

 

자바스크립트 예시

function quickSort(array) {
    if (array.length <= 1) {
        return array;
    }

    const pivot = array[Math.floor(array.length / 2)];
    const left = [];
    const right = [];

    for (let i = 0; i < array.length; i++) {
        if (i === Math.floor(array.length / 2)) continue; // 피벗은 넘김

        if (array[i] < pivot) {
            left.push(array[i]);
        } else {
            right.push(array[i]);
        }
    }

    return [...quickSort(left), pivot, ...quickSort(right)];
}

// 테스트
const array = [34, 7, 23, 32, 5, 62];
const sortedArray = quickSort(array);
console.log(sortedArray);
  • 피벗 요소가 중간값일때

'Algorithm' 카테고리의 다른 글

동적 프로그래밍 - 타뷸레이션  (0) 2024.07.18
동적 프로그래밍 - 메모이제이션  (0) 2024.07.18
정렬 (Sort) - 병합정렬  (0) 2024.07.16
정렬 (Sort) - 삽입정렬  (0) 2024.07.13
정렬 (Sort) - 선택정렬  (0) 2024.07.12
'Algorithm' 카테고리의 다른 글
  • 동적 프로그래밍 - 타뷸레이션
  • 동적 프로그래밍 - 메모이제이션
  • 정렬 (Sort) - 병합정렬
  • 정렬 (Sort) - 삽입정렬
예슬e
예슬e
예슬e
예슬e개발로그
예슬e
전체
오늘
어제
  • 분류 전체보기 (27)
    • 💙 At work in 2024 (0)
    • FrontEnd (7)
      • React (7)
      • Package Manager (0)
      • Build System (0)
      • Transpiler & Bundler (0)
      • Architecture (0)
      • Test (0)
    • BackEnd (2)
    • CS (8)
      • Data Structure (7)
      • Network (1)
    • Algorithm (10)
    • Project (0)
    • Blog (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

자료구조
타뷸레이션
백엔드
jsx
useState
리액트
리액트딥다이브
프론트엔드
리액트 파이버
자바스크립트배열
자바스크립트
하노이의탑
재귀
리렌더링
useCallback
api만들기
알고리즘
메모이제이션
useEffect
리액트파이버

최근 댓글

최근 글

hELLO· Designed By정상우.v4.5.3
예슬e
정렬 (Sort) - 퀵정렬
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.