/*
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
return 0;
}
*/
/*
#include<stdio.h>
typedef struct
{
int n,ms,is;
} score;
int main()
{
score f[1001]= {},tmp;
int n,i,j,min;
scanf("%d",&n);
for(i=1; i<=n; i++)
{
scanf("%d %d",&f[i].ms,&f[i].is);
f[i].n=i;
}
for(i=1; i<n; i++)
{
min=i;
for(j=i+1; j<=n; j++)
{
if(f[min].ms<f[j].ms)
{
min=j;
}
else if(f[min].ms==f[j].ms)
{
if(f[min].is<f[j].is)
{
min=j;
}
else if(f[min].is==f[j].is)
{
if(f[min].n>f[j].n)
{
min=j;
}
}
}
}
tmp=f[min];
f[min]=f[i];
f[i]=tmp;
}
for(i=1; i<=n; i++)
{
printf("%d %d %d\n",f[i].n,f[i].ms,f[i].is);
}
return 0;
}
*/
/*
#include<stdio.h>
typedef struct
{
char schedule[99];
int day;
}memo;
int main()
{
memo x[101]={},tmp;
int n,i,j,min;
int y, m, d;
scanf("%d ",&n);
for(i=1;i<=n;i++)
{
scanf("%s %d %d %d",x[i].schedule,&y,&m,&d);
x[i].day=d+m*100+y*10000;
}
// strcmp("aaa","zzz")<0
// strcmp("aaa","aaa")==0
// strcmp("zzz","aaa")>0
for(i=1;i<=n;i++)
{
min=i;
for(j=i+1;j<=n;j++)
{
if(x[min].day>x[j].day)
{
min=j;
}
else if(x[min].day==x[j].day)
{
if(strcmp(x[min].schedule,x[j].schedule)>0)
{
min=j;
}
}
}
tmp=x[min];
x[min]=x[i];
x[i]=tmp;
}
for(i=1;i<=n;i++)
{
printf("%s\n",x[i].schedule);
}
}
*/
/*
#include<stdio.h>
typedef struct
{
int n,g;
}program;
int main()
{
program x[101]={},tmp;
int t,i,j,min;
scanf("%d",&t);
for(i=1;i<=t;i++)
{
scanf("%d %d",&x[i].n,&x[i].g);
}
for(i=1;i<=t;i++)
{
min=i;
for(j=i+1;j<=t;j++)
{
if(x[min].n>x[j].n)
{
min=j;
}
}
tmp=x[min];
x[min]=x[i];
x[i]=tmp;
}
for(i=1;i<=t;i++)
{
printf("%d %d\n",x[i].n,x[i].g);
}
}
*/
/*
#include<stdio.h>
int main()
{
int a = 10;
int* pa = &a;
printf("%d\n",a);
printf("%d\n",&a);
printf("%d\n",pa);
printf("%d\n",*pa);
char c = 't';
char* pc = &c;
printf("%c",*pc);
}
#include<stdio.h>
void f(int pa)
{
pa = 50;
}
void strf(char* pstr)
{
//printf("%s",pstr);
//pstr[5]='c';
*(pstr+5) ='d';
}
int main()
{
char str[50]="hello pointer!";
strf(str);
printf("%s",str);
// scanf("%s",&str[0]);
//
// 배열의이름 == 배열의 첫번째원소의 주소
// str &str[0]
//
// int a = 10;
//
// f(a);
//
// printf("%d\n",a);
}
*/
/*
#include <stdio.h>
void myswap(int* pa,int* pb)
{
if(*pa>*pb)
{
int tmp;
tmp=*pa;
*pa=*pb;
*pb=tmp;
}
}
int main()
{
int a, b;
scanf("%d%d", &a, &b);
myswap(&a, &b);
printf("%d %d", a, b);
}
*/
/*
#include<stdio.h>
char* f(char* pstr,int n,int m)
{
pstr[n+m]=0;
return &pstr[n];
}
int main()
{
char str[100]={};
int n,m;
scanf("%s",str);
scanf("%d %d",&n,&m);
printf("%s",f(str,n,m));
}
*/
#include<stdio.h>
int arr[500]={0,5,7,3,10,2,1};
void swap(int a, int b)
{
int t=arr[a];
arr[a]=arr[b];
arr[b]=t;
}
void qs(int s, int e)
{
int p=s;
int low=s, high=e+1;
if(s>=e) return ; //재귀 종료조건 (정렬할 데이터가 없거나, 하나일때)
do
{
do{
low++;
}while(arr[p]>arr[low]);
do {
high--;
}while(arr[p]<arr[high]);
if(low<high) swap(low,high);
}while(low<high);
swap(p,high);
qs(s,high-1);
qs(high+1,e);
}
int main()
{
for(int i=1;i<=6;i++) printf("%d ",arr[i]);
printf("\n");
qs(1,6);
for(int i=1;i<=6;i++) printf("%d ",arr[i]);
}



