//#include<stdio.h>
//typedef struct
//{
// int a;
// int b;
//} data;
//int compare(data* pa, data* pb){
// if(pa->a > pb->a) return 1;
// else if(pa->a < pb->a) return -1;
// else return 0;
//}
//int compare1(data* pa, data* pb){
// if(pa->b > pb->b) return 1;
// else if(pa->b < pb->b) return -1;
// else return 0;
//}
//int main()
//{
// int n, j,i;
// data arr[50001]= {}, c;
// scanf("%d", &n);
// for(i=0; i<n; i++)
// {
// scanf("%d", &arr[i].a);
// }
// for(i=0; i<n; i++)
// {
// arr[i].b=i;
// }
// qsort(arr,n,sizeof(data),compare);
// for(i=1; i<n; i++)
// {
// for(j=0; j<n-i; j++)
// {
// if(arr[j].a>arr[j+1].a)
// {
// c=arr[j];
// arr[j]=arr[j+1];
// arr[j+1]=c;
// }
// }
// }
// for(i=0; i<n; i++)
// {
// arr[i].a=i;
// }
// qsort(arr,n,sizeof(data),compare1);
//
// for(i=0;i<n;i++){
// printf("%d ",arr[i].a);
// }
//}
/*
#include<stdio.h>
#include <stdlib.h>
int a[500];
void quick_sort(int s, int e) // a[s] ~ s[e] 정렬해라
{
int x, p=s, l=s+1, r=e;
if(s>=e){ // 정렬할 배열이 길이가 1이거나 0일때
return ;
}
while(l<r)
{
while(a[l]<a[p])
{
l++;
}
while(a[r]>a[p])
{
r--;
}
if(l<r)
{
x=a[l];
a[l]=a[r];
a[r]=x;// a[l], a[r] 교환
}
}
x=a[p];
a[p]=a[r];
a[r]=x;
// a[p], a[r] 교환
// a[p]의 값이 가운데 가도록 만들기
quick_sort(s,r-1);
quick_sort(r+1,e);
}
int compare(int* pa, int* pb)
{
if(*pa>*pb) return 1;
else return 0;
}
int main()
{
int i, n;
scanf("%d", &n);
for(i=0; i<n; i++)
{
scanf("%d", &a[i]);
}
//qsort(배열이름,배열갯수,데이터크기,정렬기준함수);
qsort(a,n,sizeof(int),compare);
//quick_sort(0,n-1);
for(i=0; i<n; i++)
{
printf("%d\n", a[i]);
}
}
*/
/*
#include<stdio.h>
#include<stdlib.h>
int arr[100001]={};
int f(int* pa, int* pb)
{
if(*pa>*pb) return 1;
else return 0;
}
int main()
{
int i, n;
scanf("%d", &n);
for(i=0; i<n; i++)
{
scanf("%d", &arr[i]);
}
qsort(arr,n,sizeof(int),f);
for(i=0; i<n; i++)
{
printf("%d\n", arr[i]);
}
}
*/
데이터 재정렬 퀵정렬 한 번으로 해오기