#include <stdio.h>
#include <stdlib.h>
void quick_sort(int count,int a[]);
int main(void)
{
int a[6]={0};
int i;
int num1 = 0;
int num2=0;
for(i=0;i<6;i++)
{
printf("숫자 입력하세요");
scanf("%d", &num1);
printf("%d를 입력\n",num1);
a[i]=num1;
}
for(i=0;i<6;i++)
{
printf("%d ",a[i]);
}
printf("\n1.정렬시작 2.끝내기 \n");
scanf("%d", &num2);
switch(num2)
{
case 1:
quick_sort(6,a);
for(i=0;i<6;i++)
{
printf("%d ",a[i]);
}
break;
case 2:
exit(0);
break;
}
return 0;
}
void quick_sort(int count,int a[])
{
int pivot, i, j,temp;
if(count <= 1)
return;
temp = 0;
pivot = 0;
i = pivot + 1;
j = count - 1;
while(1)
{
while (a[pivot] > a[i])
{
i++;
if(i >= count)
break;
}
while(a[pivot] < a[j])
{
j--;
}
if(i > j)
{
temp = a[pivot];
a[pivot] = a[j];
a[j] = temp;
break;
}
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
quick_sort(j,a);
quick_sort(count - (j + 1), &a[j + 1]);
}
이건데 좀 자세하게 해석해주실분좀잇나요? 주석좀 ㅠ
gif 애니메이션으로 보여 주는거 있는데 보면 바보도 이해가능. 어디 있는지 안알려줌
http://www.sorting-algorithms.com
코드해석이 필요한대 ㅠ
http://www.youtube.com/watch?v=ywWBy6J5gz8
기준점을 잡고 양끝부터 가운데까지 밀고 들어가면서 기준점 기준으로 대소 비교가 되면 서로 위치를 바꾸