🔍 문제
1~100사이 난수 10개를 병합정렬을 사용하여 정렬하기
🖥 실행
1) 모듈
def mSort(arr, asc=True):
if len(arr) < 2:
return arr
midIdx = len(arr) // 2
leftArr = mSort(arr[:midIdx], asc=asc)
rightArr = mSort(arr[midIdx:], asc=asc)
mergeArr = []
leftIdx = 0; rightIdx = 0
while leftIdx < len(leftArr) and rightIdx < len(rightArr):
if asc == True:
if leftArr[leftIdx] < rightArr[rightIdx]:
mergeArr.append(leftArr[leftIdx])
leftIdx += 1
else:
mergeArr.append(rightArr[rightIdx])
rightIdx += 1
else:
if leftArr[leftIdx] > rightArr[rightIdx]:
mergeArr.append(leftArr[leftIdx])
leftIdx += 1
else:
mergeArr.append(rightArr[rightIdx])
rightIdx += 1
mergeArr += leftArr[leftIdx:]
mergeArr += rightArr[rightIdx:]
return mergeArr
2) 실행
import random as rd
import sortMod as sm
array = rd.sample(range(1,101), 10)
result_asc = sm.mSort(array)
result_dsc = sm.mSort(array, asc=False)
print(f'array : {array}')
print(f'result_asc : {result_asc}')
print(f'result_dsc : {result_dsc}')
📝 결과물
array : [4, 86, 25, 99, 22, 78, 73, 57, 95, 45]
result_asc : [4, 22, 25, 45, 57, 73, 78, 86, 95, 99]
result_dsc : [99, 95, 86, 78, 73, 57, 45, 25, 22, 4]
'Coding test > Python 기초문제' 카테고리의 다른 글
[while 반복문] 피보나치 수열 (0) | 2022.05.19 |
---|---|
[정렬] 1부터 100사이 난수 정렬(퀵 정렬) (0) | 2022.05.17 |
[근사값] 학점 출력기 (0) | 2022.05.13 |
[최빈값] 성적 분포도 그리기 (0) | 2022.05.13 |
[파이썬 기초] 아스키 코드 최대값 찾기 (0) | 2022.05.13 |