Joshbla 2022. 5. 9. 15:41

2022/05/08

  • 백준 단계별 10-5 ~ 11-3

- 정렬
1. 선택 정렬 (Selection Sort)
가장 원시적인 방법으로 for문으로 최소값을 찾아서 첫번째 위치에 넣고
그 다음 최소값을 그 다음 위치에 넣는 것을 반복.
시간복잡도는 O(N²)로 안좋은 편

2. 버블 정렬 (Bubble Sort)
배열 내에서 서로 붙어있는 숫자끼리 비교하고 큰값을 뒤로 보내준다. 
시간복잡도는 O(N²)

3. 삽입 정렬 (Insertion Sort)
선택정렬에 비해서 시간측면에서 효율적, 필요할 때만 위치를 바꾸므로 
데이터가 거의 정렬되어 있을 때 효과적이다.
항상 오름차순으로 정렬된다.
시간복잡도는 O(N²)이다. 최상의 경우 O(N)의 복잡도를 지닌다
 
4. 퀵 정렬
가장 많이 사용한다. 피벗-파티션의 과정을 거친다.
평균 시간복잡도는 O(NlogN)이고 최악의 경우 O(N²)이다.


5. 계수 정렬 (Count Sort)
특정 조건 아래서 매우빠른 알고리즘
모든데이터가 양의 정수, 데이터 개수가N, 데이터 중 최댓값이 K일 때
수행시간 O(N+K)가 보장된다.
일반적으로 데이터의 최소,최대의 차가 1,000,000을 넘지 않을 때 효과적

- Arrays.sort는 퀵정렬에 해당하고 평균nlogn, 최악n2

Collections.sort는 타임정렬에 해당한다. 평균, 최악nlogn

 

정렬 종류 시간 복잡도 공간 복잡도
평균(Average) 최선(Best) 최악(Worst)
선택 정렬 O(n2) O(n2) O(n2) O(n2)
버블 정렬 O(n2) O(n2) O(n2) O(n)
삽입 정렬 O(n2) O(n) O(n2) O(n2)
합병 정렬 O(n×log n) O(n×log n) O(n×log n) O(n×log n)
퀵 정렬 O(n×log n) O(n×log n) O(n2) O(n×log n)
힙 정렬 O(n×log n) O(n×log n) O(n×log n) O(n×log n)
쉘 정렬 O(N^1.25) O(N^1.25) O(N^1.25) O(n)
기수 정렬 O(dn) O(dn) O(dn)  

 

출처 : https://coding-factory.tistory.com/615