할껀하고놀자

[알고리즘] 퀵 정렬 본문

[IT]/알고리즘

[알고리즘] 퀵 정렬

working_hard 2019. 5. 31. 01:12
728x90
#include<iostream>
#include<algorithm>
#include<vector>

using namespace std;



void quick_sort(int * data, int start, int end) {
	if (start >= end) {
		return;// 원소가 1개인 경우.
	}
	int pivot = start;
	int i = pivot + 1;
	int j = end;
	int tmp;
	while (i <= j) {
		// 포인터가 엇갈릴 때까지 반복해준다.
		while (i <= end && data[i] <= data[pivot]) {
			i++;
		}
		while (j > start && data[j] >= data[pivot]) {
			j--;
		}
		if (i > j) {
			tmp = data[j];
			data[j] = data[pivot];
			data[pivot] = tmp;
		}
		else {
			tmp = data[i];
			data[i] = data[j];
			data[j] = tmp;
		}
		for (int i = 0; i < 10; i++)
		{
			cout << data[i] << " ";
		}
		cout << endl;
	}
	quick_sort(data, start, j - 1);
	quick_sort(data, j + 1, end);
}
int main() {
	int data[10] = { 1,10,5,8,7,6,4,3,2,9 };

	quick_sort(data, 0, 9);
	
	for (int i = 0; i < 10; i++)
	{
		cout << data[i] << " ";
	}
	
	return 0;
}

 

Comments