본문 바로가기
Problem Solving/백준

[백준] 2751번 : 수 정렬하기 2

by shinbian11 2020. 2. 24.

출처: 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; 로 바꾸면 당연히 내림차순 정렬로 바뀝니다.

 

> 정답으로 맞긴 했다만 실행시간이 왜 이렇게 오래 걸리는지는 잘 모르겠네요.. 아직 메모리에 대한 공부는 전혀 되어있지 않아서 그런듯..ㅠ

'Problem Solving > 백준' 카테고리의 다른 글

[백준] 2523번: 별 찍기 - 13  (0) 2020.03.15
[백준] 1436번 : 영화감독 숌  (0) 2020.02.29
[백준] 1932번 : 정수 삼각형  (0) 2020.02.25
[백준] 10773번 : 제로  (0) 2020.02.24
[백준] 10828번 : 스택  (0) 2020.02.24