Coding/C
[C] Quick Sort
by 暻煥
2025. 11. 15.
#include <stdio.h>
#include <stdlib.h>
#define MAX_NUM 100
struct data {
int val;
};
struct data input[MAX_NUM];
struct data* ptrs[MAX_NUM];
int num = 10;
void quickSort_ascending(struct data* arr[], int first, int last)
{
int pivot, i, j;
struct data* temp;
if (first < last)
{
pivot = first;
i = first;
j = last;
while (i < j)
{
while (arr[i]->val <= arr[pivot]->val && i < last)
i++;
while (arr[j]->val > arr[pivot]->val)
j--;
if (i < j)
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
temp = arr[pivot];
arr[pivot] = arr[j];
arr[j] = temp;
quickSort(arr, first, j - 1);
quickSort(arr, j + 1, last);
}
}
void quickSort_descending(struct data* arr[], int first, int last)
{
int pivot, i, j;
struct data* temp;
if (first < last)
{
pivot = first;
i = first;
j = last;
while (i < j)
{
while (arr[i]->val >= arr[pivot]->val && i < last)
i++;
while (arr[j]->val < arr[pivot]->val)
j--;
if (i < j)
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
temp = arr[pivot];
arr[pivot] = arr[j];
arr[j] = temp;
quickSort(arr, first, j - 1);
quickSort(arr, j + 1, last);
}
}
void printResult(struct data* arr[])
{
for (int i = 0; i < num; ++i)
{
printf("%d ", arr[i]->val);
}
printf("\n");
}
int main(void)
{
for (int i = 0; i < num; i++)
{
input[i].val = rand();
ptrs[i] = &input[i]; // 포인터 배열 초기화
}
quickSort_ascending(ptrs, 0, num - 1);
// quickSort_descending(ptrs, 0, num - 1);
printf("#%d ", test_case);
printResult(ptrs);
return 0;
}