/*
#include <stdio.h>//1452 : 데이터 정렬 (large)
int a[100001]={}, n;
void temp(int x,int y)
{
int t;
t = a[x];
a[x] = a[y];
a[y] = t;
}
void view()
{
for(int i=1;i<=n;i++)
printf("%d ",a[i]);
printf("\n");
}
void f(int s, int e)
{
int pivot=s; //s이외에 원하는 친구를 pivot으로 설정해도 OK
int i,j,left=s,right=e+1,t;
if(s>=e){
return ;
}
for(;;){
do{
left++;
}while(a[pivot]>a[left]);
do{
right--;
}while(a[pivot]<a[right]);
if(left>=right){
break;
}
temp(left,right);
}
temp(right,pivot);
view();
f(s,right-1);
f(right+1,e);
}
int main()
{
int i,j;
scanf("%d",&n);
for(i=1; i<=n; i++){
scanf("%d",&a[i]);
}
f(1,n);
for(i=1; i<=n; i++){
printf("%d\n",a[i]);
}
return 0;
}
#include <stdio.h>//1452 : 데이터 정렬 (large)
#include <stdlib.h>
int a[100001]={}, n;
// 오름차순?내림차순? 정하는 함수 1, -1
int compare(int* pa, int* pb)
{
if(*pa > *pb) return 1; // 앞에게 더 크면 바꿔라 = 오름차순
else return -1;
}
int main()
{
int i,j;
scanf("%d",&n);
for(i=1; i<=n; i++){
scanf("%d",&a[i]);
}
//qsort(정렬할 배열의 첫원소주소, 정렬할 배열의 원소 갯수, 원소1개의 크기, 비교함수);
//f(1,n); 원래 이렇게 썼음
qsort(&a[1],n,sizeof(int),compare);
//qsort(a, )
for(i=1; i<=n; i++){
printf("%d\n",a[i]);
}
return 0;
}
//3004 : 이진탐색 + 퀵정렬
*/
/*
#include <stdio.h> //qsort 이해하기 연습
#include <stdlib.h> //1452 : 데이터 정렬 (large)
int a[100001]={};
int compare(int* pa, int* pb)
{
if(*pa < *pb) return 1;
else return -1;
}
int main()
{
int i,j,n;
scanf("%d",&n);
for(i=0; i<n; i++){
scanf("%d",&a[i]);
}
qsort(&a[0],n,sizeof(int),compare);//qsort(a(=&a[0]),n,sizeof(int)=4,compare(바꿀 수 있음.)))
for(i=0; i<n; i++){
printf("%d\n",a[i]);
}
return 0;
}
*/
/*
#include <stdio.h>//3004 : 데이터 재정렬
#include <stdlib.h>
int a[50001]={},b[50001]={};
int compare(int* pa,int* pb)
{
if(*pa > *pb) return 1;
else return -1;
}
int main()
{
int i,j,e;
scanf("%d",&e);
for(i=0; i<e; i++){
scanf("%d",&a[i]);
b[i]=a[i];
}
qsort(b,e,sizeof(int),compare);
for(i=0; i<e; i++){
for(j=0; j<e; j++){
if(a[i]==b[j]){
a[i]=j;
}
}
}
//printf("\n");
for(i=0; i<e; i++){
printf("%d ",a[i]);
}
return 0;
}
메모리에서의 주소 1Byte당 1개
int 4Byte
int a = 10;
char c = 't';
printf("a = %d\n",a);
printf("c = %c\n\n",c);
printf("&a = %d\n",&a);
printf("&c = %d\n\n",&c);
int* pa = &a;
char* pc = &c;
printf("pa = %d\n",pa);
printf("pc = %d\n\n",pc);
printf("*pa = %d\n",*pa);
printf("*pc = %c\n",*pc);
#include <stdio.h>
void f(int* pa)
{
*pa = 500;
}
int main()
{
int a = 10;
printf("a = %d\n",a);
f(&a);
printf("a = %d\n",a);
return 0;
}
*/
/*
#include <stdio.h>//1581 : (함수 작성+포인터) swap 함수 만들기 (Call by Reference)
void myswap(int* pa,int* pb)
{
if(*pa < *pb){
return ;
}
int temp;
temp = *pa;
*pa = *pb;
*pb = temp;
}
main()
{
int a, b;
scanf("%d%d", &a, &b);
myswap(&a, &b);
printf("%d %d", a, b);
}
*/