지 모르겟어요 ㅠㅠ 이름을 퀵소트로 정렬 하는 프로그램을 짯는데 어느 부분이 문제인지 말해주십사 글을 올리옵니다 ㅠ
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 10
#define SWAP(x, y, t) (strcpy(t, x), strcpy(x, y), strcpy(y, t))
typedef struct student {
char name[20];
} student;
student stu[10] = {
{"김지헌"}, {"권태희"}, {"김승현"},
{"김동현"}, {"김연우"}, {"서보준"},
{"정홍석"}, {"정홍철"}, {"이혜란"},
{"김영광"} };
int partition(student list[], int left, int right)
{
char pivot[20];
char temp[20];
int low, high;
low = left;
high = right+1;
strcpy(pivot, list[left].name);
do {
do low++;
while(low <= right && (strcmp(list[low].name, pivot) == -1));
do high;
while(high >= left && (strcmp(list[high].name, pivot) == 1));
if(low < high) SWAP(list[low].name, list[high].name, temp);
} while(low < high);
SWAP(list[left].name, list[high].name, temp);
return high;
}
void quick_sort(student list[], int left, int right)
{
if(left < right) {
int q = partition(list, left, right);
quick_sort(list, left, q-1);
quick_sort(list, q+1, right);
}
}
int main(void)
{
int i, n =10;
printf("<퀵소트하기 전 상태>\n");
for(i = 0; i < 10; i++)
{
printf(" %s\n", stu[i].name);
}
quick_sort(stu, 0, n-1);
printf("<퀵소트를 한 후 상태>\n");
for(i = 0; i < 10; i++)
{
printf(" %s\n", stu[i].name);
}
return 0;
}