Problem Solving/백준
[백준] 2751번 : 수 정렬하기 2
shinbian11
2020. 2. 24. 20:41
출처: https://www.acmicpc.net/problem/2751
2751번: 수 정렬하기 2
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
www.acmicpc.net
//qsort함수
#include <stdio.h>
#include <stdlib.h>
#define MAX 1000000
int values[MAX];
int compare(const void* a, const void* b)
{
return *(int*)a - *(int*)b; //첫번째 원소가 더 크면 양수반환,더 작으면 음수반환, 같으면 0 (오름차순)
}
int main()
{
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d", &values[i]);
}
qsort(values, n, sizeof(int), compare);
//정렬할 배열,원소개수,각원소의크기,비교함수
for (int i = 0; i < n; i++)
printf("%d\n", values[i]);
}
> return *(int*)a - *(int*)b; 을 return *(int*)b - *(int*)a; 로 바꾸면 당연히 내림차순 정렬로 바뀝니다.
> 정답으로 맞긴 했다만 실행시간이 왜 이렇게 오래 걸리는지는 잘 모르겠네요.. 아직 메모리에 대한 공부는 전혀 되어있지 않아서 그런듯..ㅠ