* 퀵소트 이용 - 시간초과
def qsort(data):
if len(data) <= 1:
return data
left, right = [], []
pivot = data[0]
for i in range(1, len(data)):
if pivot > data[i]:
left.append(data[i])
else:
right.append(data[i])
return qsort(left) + [pivot] + qsort(right)
n = int(input())
num_list = []
for _ in range(n):
num_list.append(int(input()))
result = qsort(num_list)
for data in result:
print(data)
* 병합소트 이용 - 시간초과
def merge_sort(a):
if len(a) <=1:
return a
mid = len(a) // 2
left = merge_sort(a[:mid])
right = merge_sort(a[mid:])
i, j, k = 0, 0, 0
while i < len(left) and j < len(right):
if left[i] < right[j]:
a[k] = left[i]
i += 1
else:
a[k] = right[j]
j += 1
k += 1
if i == len(left):
while j < len(right):
a[k] = right[j]
j += 1
k += 1
elif j == len(right):
while i < len(left):
a[k] = left[i]
i += 1
k += 1
return a
n = int(input())
a = []
for _ in range(n):
a.append(int(input()))
a = merge_sort(a)
print(a)
for data in a:
print(data)
* 기본함수 이용 - 시간초과
n = int(input())
a = []
for _ in range(n):
a.append(int(input()))
a = sorted(a)
print(a)
for data in a:
print(data)
* 이진탐색트리와 같이 정렬을 하면서 소팅을 해야 할것으로 보인다
'개발 > 알고리즘' 카테고리의 다른 글
[백준] #1543 문서검색 (0) | 2020.10.30 |
---|---|
[백준] #11004 K번째수 (0) | 2020.10.30 |
[시간초과][백준] #1074 Z (0) | 2020.10.29 |
[백준] #2747 피보나치 수 (0) | 2020.10.28 |
[백준] #10989 수 정렬하기 (0) | 2020.10.28 |
댓글