CS 지식/Algorithm-Problem Solving 정리
[백준] 2750 수 정렬하기 : 기본적인 정렬들을 구현해 풀어보기
Hoplin
2022. 1. 11. 15:46
반응형
URL : https://www.acmicpc.net/problem/2750
2750번: 수 정렬하기
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
www.acmicpc.net
기본적인 정렬 문제이다. 첫번째 줄에 n을 받고 그 다음줄부터 총 n개의 수를 받아서, 정렬하는 문제이다. 버블정렬, 선택정렬, 삽입정렬, 퀵정렬, 파이썬 내장 sort, 숏코딩 총 6가지 방법으로 풀어보았다
from typing import MutableSequence
'''
python short coding
print(*sorted([int(input()) for _ in range(int(input()))]),sep = "\n")
'''
i = int(input())
li = [int(input()) for _ in range(i)]
# 버블 정렬
def bubble_Sort(a : MutableSequence) -> None:
n = len(a)
for i in range(n - 1):
for j in range(n - 1, i, -1):
if a[j - 1] > a[j]:
a[j],a[j-1] = a[j-1],a[j]
# 선택정렬
def selection_sort(a : MutableSequence) -> None:
n = len(a)
for i in range(n - 1):
min = i
for j in range(i + 1,n):
if a[j] < a[min]:
min = j
a[min],a[i] = a[i],a[min]
# 삽입정렬
def insertion_sort(a : MutableSequence) -> None:
n = len(a)
for i in range(1,n):
j = i
highlight_value = a[i]
while j >0 and a[j - 1] > highlight_value:
a[j] = a[j-1]
j -= 1
a[j] = highlight_value
def quick_sort(a : MutableSequence, left : int, right : int) -> None:
pl = left
pr = right
pivot = a[(left + right) // 2]
while pl <= pr:
while a[pl] < pivot: pl += 1
while a[pr] > pivot: pr -= 1
if pl <= pr:
a[pl],a[pr] = a[pr],a[pl]
pl += 1
pr -= 1
if left < pr:
quick_sort(a,left,pr)
if right > pl:
quick_sort(a,pl,right)
# 파이썬 내장 sort()
def python_inner_sort(a : MutableSequence) -> MutableSequence:
return sorted(a)
#bubble_Sort(li)
#insertion_sort(li)
#selection_sort(li)
#quick_sort(li,0,len(li) - 1)
li = python_inner_sort(li)
print(*li,sep='\n')
반응형