알고리즘
[Java] 알고리즘 Day6
Jaemin0604
2024. 7. 4. 17:47
정렬
1. 선택정렬
- 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸고, 그 다음 작은 데이터를 선택해 앞에서 두 번째 데이터와 바꾸는 과정을 반복하는 정렬
- 연산 횟수는 N+(N-1)+(N-2)+ … +2 = (N² + N)/2 번
- 시간 복잡도는 O(N²)이므로 알고리즘 문제 풀이에 사용하기에는 느림
2. 삽입정렬
- 첫 번째 데이터가 정렬되어 있다고 가정하고 두 번째 데이터부터 탐색하여 첫번째 데이터보다 작으면 앞, 크면 뒤에 삽입한다.
- 삽입 정렬은 데이터가 거의 정렬 되어 있을 때 훨씬 효율적
- 삽입 정렬의 시간 복잡도는 시간 복잡도는 O(N²)지만 데이터가 거의 정렬되었을 때는 빠르게 동작하여 최선의 경우 O(N)의 시간 복잡도를 가짐
3. 퀵정렬
- 피벗을 선정하여 피벗보다 작은 값을 왼쪽으로, 큰 값을 오른쪽으로 분할하여 정렬
- 두 부분으로 나눠진 부분에서 다시 피벗을 선정하여 정렬
- 퀵 정렬의 평균 시간 복잡도는 O(NlogN)