[알고리즘] 퀵 정렬 (Quick Sort)
글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자입니다
목차
인프런 Rookiss님의 '자료구조와 알고리즘' 강의를 기반으로 정리한 필기입니다.
😎 [C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part3: 자료구조와 알고리즘 강의 들으러 가기!
퀵 정렬 (Quick Sort)
퀵 정렬은 분할 정복(Divide and Conquer)에 바탕을 둔 정렬 방식이다. 퀵 정렬은 기준 요소(Pivot) 선정 및 분할의 반복하는 방식으로 동작한다.
시간복잡도는 평균적으로 O(NlogN)이다.
퀵 정렬
1. Pivot 설정
- pivot > arr[low]일 동안 low를 오른쪽으로 이동
- pivot < arr[high]일 동안 high를 왼쪽으로 이동
2. low < high라면, arr[low]와 arr[high] 데이터 교체
3. high <= low면 빠져나오고, pivot과 arr[high] 교체
H3 중제목
본문내용넣기
int Partition(vector<int>& v, int left, int right)
{
int pivot = v[left];
int low = left + 1;
int high = right;
while (low <= high)
{
while (low <= right && pivot >= v[low]) // 조건문 순서 주의
low++;
while (high >= left + 1 && pivot <= v[high]) // 조건문 순서 주의
high--;
if (low < high)
swap(v[low], v[high]);
}
swap(v[left], v[high]);
return high;
}
|
cs |
void QuickSort(vector<int>& v, int left, int right)
{
if (left > right)
return;
int pivot = Partition(v, left, right);
QuickSort(v, left, pivot -1); // 재귀 호출
QuickSort(v, pivot + 1, right); // 재귀 호출
}
|
cs |
int main()
{
vector<int> v;
srand(time(0));
for (int i = 0; i < 50; i++)
{
int randValue = rand() % 100;
v.push_back(randValue);
}
QuickSort(v, 0, v.size() - 1);
for (int i = 0; i < 50; i++)
{
cout << v[i] << " ";
}
}
|
cs |
H3 중제목
본문내용넣기
마무리
마무리
'⭐ Programming > 자료구조와 알고리즘' 카테고리의 다른 글
[알고리즘] 상호 배타적 집합(Disjoint Set) (0) | 2022.11.06 |
---|---|
[알고리즘] 해시 테이블 (Hash Table) (0) | 2022.11.06 |
[알고리즘] 레드 블랙 트리 (Red Black Tree) (0) | 2022.11.03 |
[알고리즘] 이진 탐색(Binary Search), 이진 탐색 트리(Binary Search Tree) (0) | 2022.11.02 |
[알고리즘] A* 길찾기 알고리즘 (0) | 2022.11.02 |
댓글
이 글 공유하기
다른 글
-
[알고리즘] 상호 배타적 집합(Disjoint Set)
[알고리즘] 상호 배타적 집합(Disjoint Set)
2022.11.06 -
[알고리즘] 해시 테이블 (Hash Table)
[알고리즘] 해시 테이블 (Hash Table)
2022.11.06 -
[알고리즘] 레드 블랙 트리 (Red Black Tree)
[알고리즘] 레드 블랙 트리 (Red Black Tree)
2022.11.03 -
[알고리즘] 이진 탐색(Binary Search), 이진 탐색 트리(Binary Search Tree)
[알고리즘] 이진 탐색(Binary Search), 이진 탐색 트리(Binary Search Tree)
2022.11.02