정렬 문제.
https://www.acmicpc.net/problem/2752
문제
동규는 세수를 하다가 정렬이 하고 싶어졌다.
정수 세 개를 생각한 뒤에, 이를 오름차순으로 정렬하고 싶어졌다.
정수 세 개가 주어졌을 때, 가장 작은 수, 그 다음 수, 가장 큰 수를 출력하는 프로그램을 작성하시오.
입력
정수 세 개가 주어진다. 이 수는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 이 수는 모두 다르다.
출력
제일 작은 수, 그 다음 수, 제일 큰 수를 차례대로 출력한다.
#include<stdio.h>
int num;
int arr[1000001];
void quick_sort(int *arr, int start, int end){
if(start>=end){
return;
}
int pivot = start;
int i = start+1;
int j = end;
int tmp;
while(i>=j){
while(arr[i]<=arr[pivot]){
i++;
}
while(arr[j]>=arr[pivot] && j>start)
if(i>=j){
tmp = arr[j];
arr[j] = arr[pivot];
arr[pivot] = tmp;
}
else{
tmp = arr[j];
arr[j] = arr[i];
arr[i] = tmp;
}
}
quick_sort(arr, start, j-1);
quick_sort(arr, j+1, end);
}
int main(void){
scanf("%d", &num);
for(int i=0;i<num;i++){
scanf("%d", &arr[i]);
}
quick_sort(arr, 0, num-1);
for (int i = 0; i < 3; i++) {
printf("%d\n", arr[i]);
}
return 0;
}
c++ 알고리즘 라이브러리 사용
#include <stdio.h>
#include <algorithm>
int num;
int arr[1000001];
int main(){
scanf("%d", &num);
for(int i=0;i<num;i++){
scanf("%d", &arr[i]);
}
std::sort(arr, arr+num);
for(int i=0;i<num;i++){
printf("%d\n", &arr[i]);
}
return 0;
}
파이썬 코드
arr = list(map(int, input().split()))
sort_arr = sorted(num)
for i in range(3):
print(sort_num[i])