반응형
URL : https://www.acmicpc.net/problem/2750
기본적인 정렬 문제이다. 첫번째 줄에 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')
반응형
'CS 지식 > Algorithm-Problem Solving 정리' 카테고리의 다른 글
[프로그래머스] 가장 큰 수 (0) | 2022.01.11 |
---|---|
[프로그래머스] K번째 수 (0) | 2022.01.11 |
[백준] 10870 피보나치 수 5 (0) | 2022.01.03 |
[구름]계단 오르기 (0) | 2022.01.03 |
11653번: 소인수 분해, 나의 잘못된 접근법과 내가 놓친부분 (0) | 2021.01.10 |