정렬(Sorting) 📶
컬렉션(e.g. an array)의 항목을 재배열하는 과정
- 선택 정렬(Selection Sort)
- 삽입 정렬(Insertion Sort)
- 퀵 정렬(Quick Sort)
- 합병 정렬(Merge Sort)
- 힙 정렬(Heap Sort)
- 기수 정렬(Redix Sort (LSD))
- 기수 정렬(Redix Sort (MSD))
- std::sort (gcc)
- std::stable_sort (gcc)
- 셸 정렬(Shell Sort)
- 버블 정렬(Bubble Sort)
- 칵테일 정렬(Cocktail Shaker Sort)
- 난쟁이 정렬(Gnome Sort)
- 바이토닉 정렬(Bitonic Sort)
- 보고 정렬(Bogo Sort)
Algorithm |
👍 Best
|
Avg |
👎 Worst
|
Space Complexity |
stable |
in-place |
|---|---|---|---|---|---|---|
| 선택 정렬(Selection Sort) | O( |
O( |
O( |
O(1) | ✅ | |
| 삽입 정렬(Insertion Sort) | O( |
O( |
O( |
O(1) | ✅ | ✅ |
| 퀵 정렬(Quick Sort) | O( |
O( |
O( |
O( |
✅ | |
| 합병 정렬(Merge Sort) | O( |
O( |
O( |
O( |
✅ | |
| 힙 정렬(Heap Sort) | O( |
O( |
O( |
O(1) | ✅ | |
| 기수 정렬(Redix Sort (LSD)) | ||||||
| 기수 정렬(Redix Sort (MSD)) | ||||||
| std::sort (gcc) | ||||||
| std::stable_sort (gcc) | ||||||
| 셸 정렬(Shell Sort) | ||||||
| 버블 정렬(Bubble Sort) | O( |
O( |
O( |
O(1) | ✅ | ✅ |
| 칵테일 정렬(Cocktail Shaker Sort) | ||||||
| 난쟁이 정렬(Gnome Sort) | ||||||
| 바이토닉 정렬(Bitonic Sort) | ||||||
| 보고 정렬(Bogo Sort) |
ECMAScript 명세에서는 Array.prototype.sort() 매서드에 대해 특정한 정렬 알고리즘에 대한 요구사항을 명시적으로 제공하지 않는다. 브라우저마다 구현된 알고리즘은 다를 수 있다.
자바스크립트의 내장 정렬 메서드 sort 사용 시 옵셔널 compareFn을 생략하게 되면,
배열의 모든 항목이 문자열로 변환되고 각 문자의 유니 코드 코드 포인트 값에 따라 정렬된다.
Array.prototype.sort() 매서드는 원본 배열을 직접 변경하도록 설계되었다.
15 Sorting Algorithms in 6 Minutes
Sorting Algorithms Animations
VisuAlgo - Sorting
Udemy - JavaScript Algorithms and Data Structures Masterclass