직대딩 블로그
퀵 정렬 본문
#include<stdio.h>
int count, m;
void swap(int *x, int *y) {
int temp = *x;
*x = *y;
*y = temp;
}
void qs(int a[], int left, int right) {
int i, j, k, pivot;
if (left < right) {
i = left - 1; j = right;
pivot = a[right];
do {
do { i++; } while (a[i] < pivot);
do { j--; } while (j > left && a[j] > pivot);
if (i < j) swap(&a[i], &a[j]);
printf("step %d :", m++);
for (int k = 0; k < count; k++) printf("%d\t", a[k]);
printf("\n");
} while (i < j);
swap(&a[right], &a[i]);
qs(a, left, i - 1);
qs(a, i + 1, right);
}
}
void main() {
int array[] = { 5,2,8,1,9,7 };
count = sizeof(array) / sizeof(int);
printf("정렬 전 데이터 : ");
for (int i = 0; i < count; i++)
printf("%d \t", array[i]);
printf("\n");
qs(array, 0, count - 1);
printf(" 정렬 후 데이터 :");
for (int i = 0; i < count; i++)
printf("%d \t", array[i]);
printf("\n");
}
'알고리즘 > 알고리즘 기법 정리' 카테고리의 다른 글
기수 정렬 (0) | 2023.03.12 |
---|---|
힙 정렬 (0) | 2023.03.12 |
(알고리즘) 자주 사용하는 함수들 (0) | 2023.03.12 |
Suffix Array와 Index Tree (1) | 2023.03.12 |
그래프 (Graph)와 DFS/BFS (0) | 2023.03.12 |
Comments