//재귀 함수 이용
//*Array : 정렬할 데이터 배열, LeftRange : 가장 왼쪽의 위치, RightRange : 가장
오른쪽의 위치
void Sort::QuickSort(int *Array, int LeftRange, int RightRange)
{
int copy; //자리 변경용 저장 변수
int left = LeftRange; //검색할 데이터의 위치 : 왼쪽부터
시작, 기준보다 큰 데이터를 찾는다
int right = RightRange; //검색할 데이터의 위치 : 오른쪽부터
시작, 기준보다 작은 데이터를 찾는다
int pivot = Array[(left + right) /
2]; //기준
//left가 right보다 작거나 같으면
반복 계속
while (left <= right)
{
//pivot보다 큰 데이터를 찾을때까지 반복
while (Array[left] < pivot)
left++;
//pivot보다 작은 데이터를 찾을때까지 반복
while (Array[right] > pivot)
right--;
//left가 right보다 작거나 같으면
데이터 교환
if (left <= right)
{
copy
= Array[left];
Array[left] = Array[right];
Array[right] = copy;
left++;
right--;
}
}
//입력된 범위 중 가장 왼쪽 위치(LeftRange)보다 right의 위치가 더 크면 정렬 실행
if (LeftRange < right)
QuickSort(Array, LeftRange, right);
//입력된 범위 중 가장 오른쪽 위치(RightRange)보다 left의 위치가 더 작으면 정렬 실행
if (left < RightRange)
QuickSort(Array, left, RightRange);
}