/*
#include <stdio.h>
int d[100000]={};
int bs(int s,int e,int k)
{
int mid=(s+e)/2;
//printf("%d %d %d\n",s,mid,e);
if(s>=e)
{
return mid+1;
}
if(k<=d[mid])
{
return bs(s,mid,k);
}
else
{
return bs(mid+1,e,k);
}
}
int main()
{
int n,k,i;
scanf("%d %d",&n,&k);
for(i=0;i<n;i++)
{
scanf("%d",&d[i]);
}
if(k>d[n-1])
printf("%d",n+1);
else
printf("%d",bs(0,n-1,k));
return 0;
}
*/
/**
*quick sort 퀵 정렬
버블, 선택, 삽입 -> easy but slow
퀵, 병합, 기수 -> hard but fast
*/
/*
void qs(int s, int e)
{
if (s>=e) //정렬할게 없다면
{
return ;
}
int p = s;
int left = s+1, right = e;
while(1)
{
while(a[left] < a[p])
{
left++;
}
while(a[right] > a[p])
{
right--;
}
if (left>right)
break;
// a[left] a[right] 교환
}
// a[right] a[p] 교환
qs(s,r-1);
qs(r+1,e);
}
*/
#include <stdio.h>
#include <stdlib.h> // q sort 내장 함수 존재
int a[100]={10,4,1,3,2,1,4,7};
int compare(int* pa, int* pb)
{
if(*pa < *pb ) // 교환 여부?
return 1;
else
return 0;
}
int main()
{
int n = 8;
//qsort(정렬할첫원소의주소, 정렬할 데이터의 개수, 정렬할 데이터의 단위, 정렬 기준 함수);
qsort(a,n,sizeof(int),compare);
for(int i=0;i<n;i++)
printf("%d ",a[i]);
}
/*
********포인터 문법 설명
#include <stdio.h>
int main()
{
int a = 10;
int* pa = &a;
printf("a : %d\n",a); //직접 접근
printf("&a :%d\n",&a);
printf("pa : %d\n",pa);
printf("*pa :%d\n",*pa); //간접 접근
}
*/
1452 : 데이터 정렬 (large) -> 퀵 정렬 라이브러리 사용해서 풀어보기
3004 : 데이터 재정렬 -> 정렬 + 탐색
버블+ 그냥 탐색 (시간 초과)
퀵 + 이진 탐색 (통과)



