퀵 정렬은 분할 정복(Divide & Conquer) 방식의 정렬 알고리즘입니다.
하나의 기준값(pivot)을 정하고, 작은 값은 왼쪽, 큰 값은 오른쪽으로 분할한 뒤,
각 부분을 재귀적으로 정렬합니다.
코드 전체
#include<stdio.h>voidquick_sort(int arr[],int left,int right){if(left >= right)return;// 종료 조건: 정렬할 구간에 원소가 1개 이하일 때int pivot = arr[left];// 기준값(pivot): 맨 앞 원소int i = left +1;// 왼쪽에서 오른쪽으로 이동할 포인터int j = right;// 오른쪽에서 왼쪽으로 이동할 포인터int temp;while(i <= j){// pivot보다 큰 값을 만날 때까지 i를 오른쪽으로 이동while(i <= right && arr[i]<= pivot) i++;// pivot보다 작은 값을 만날 때까지 j를 왼쪽으로 이동while(j > left && arr[j]>= pivot) j--;if(i > j){// i와 j가 엇갈리면 pivot과 arr[j]를 교환
temp = arr[left];
arr[left]= arr[j];
arr[j]= temp;}else{// i와 j가 엇갈리지 않으면 두 값을 교환
temp = arr[i];
arr[i]= arr[j];
arr[j]= temp;}}// 왼쪽 파티션 정렬quick_sort(arr, left, j -1);// 오른쪽 파티션 정렬quick_sort(arr, j +1, right);}intmain(){int arr[8]={5,3,8,4,2,7,1,6};quick_sort(arr,0,7);// 전체 배열 정렬for(int i =0; i <8; i++){printf("%d ", arr[i]);}printf("\n");return0;}