2023. 9. 20. 14:54ㆍCS
Comparison Sort: 비교를 통해 정렬하는 방식이다.
Bubble Sort: 인접한 두개를 반복해서 비교한다. 제일 큰 수부터 쌓인다.
Selection Sort: 인덱스를 선택하고 기억하고 있다가 한번 훑으며 최솟값을 찾아 그 인덱스의 값을 고쳐준다.
Insertion Sort: 오른쪽으로 순회하며 그 값에 해당하는 위치에 삽입해준다.
Merge Sort: 쪼개고 병합하며 정렬해간다. n이 트리의 깊이 logn으로 줄기 때문에 시간 복잡도가 감소한다.
Heap Sort: 넣고 뺄 때 최소나 최대를 위로 올려준다. 그래서 logn이고 n개에 대해서 진행되니 nlogn이다.
Quick Sort: pivot을 기준으로 왼쪽과 오른쪽 기준을 가지며 pivot보다 크고 작으면 swap해준다. 엇갈릴 때까지 진행된다. 엇갈리면 멈추는 이유는 pivot이 들어가야 할 위치가 엇갈린 중간이기 때문이다. 일단 엇갈린 왼쪽은 큰 값을 지칭하고 있고 엇갈린 오른쪽은 작은 값을 지칭하고 있기 때문이다. pivot은 median of three를 활용하면 제일 효율이 좋다고 알려져 있다.
non-Comparison Sort: 비교를 하지않고 정렬하는 방식이다.
Counting Sort: 값에 해당하는 인덱스라고 보고 그만큼 버킷을 준비하여 버킷에는 값의 개수를 넣는다. 누적합을 만들어서 새로운 배열에 할당하는 방법이라고 한다. 그러나 굳이 누적합을 만들지 않아도 그 개수만큼을 추가해주는 방식으로 해도 똑같다. 그리고 이 방식이 생각하기 더 편하다.
Radix Sort: 기수 정렬이라고 하고 같은 길이를 대상으로 한다. 한 자리씩 정렬해나가는 방법이다.
Bucket Sort: Counting Sort의 확장이다. Bucket은 특정 index의 길이를 담고 있다. 그 안에서 정렬이 되는 방식이다. 분할 정복과도 유사하다. 비교라고 볼 수 있고 아니라고 할 수도 있다. 애매하다.
Reference
https://blog.naver.com/occidere/220870294816
[정렬] Median of Three QuickSort(중간값 퀵소트) (2017.10.13 수정 완료)
이번에는 일반적인 퀵소트에서 조금 더 성능이 향상된 퀵소트를 소개하려고 한다. 설명에 들어가기에 앞서 ...
blog.naver.com
https://gmlwjd9405.github.io/2018/05/10/algorithm-quick-sort.html
[알고리즘] 퀵 정렬(quick sort)이란 - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
https://yaboong.github.io/algorithms/2018/03/20/counting-sort/
Counting Sort - 계수정렬
개요 원소간 비교없이 정렬할 수 있는 카운팅 정렬에 대해 알아본다.
yaboong.github.io
https://ratsgo.github.io/data%20structure&algorithm/2017/10/18/bucketsort/
버킷 정렬(Bucket sort) · ratsgo's blog
이번 글에서는 버킷 정렬(Bucket sort) 알고리즘을 살펴보도록 하겠습니다. 이 글은 고려대 김선욱 교수님 강의와 위키피디아를 참고해 정리하였음을 먼저 밝힙니다. 파이썬 코드는 이곳을 참고로
ratsgo.github.io
'CS' 카테고리의 다른 글
[CS] 운영체제의 역할에 대한 나름의 이해 (0) | 2023.10.07 |
---|---|
[CS] 에라토스테네스의 체 시간복잡도 (0) | 2023.09.21 |
[CS] 다익스트라 알고리즘의 시간 복잡도 (0) | 2023.09.19 |
[CS] 알고리즘의 두 기둥 (2) | 2023.09.19 |
[CS] 다익스트라에 대한 나름의 이해 (0) | 2023.09.16 |