첫번째 파일
selectMod
# 선택정렬
# 숫자로 이루어진 리스트를 선택정렬 알고리즘을 이용해서
# 오름차순과 내림차순으로 정렬하는 모듈을 만들어보자(단, 정렬하는 과정도 출력한다.)
import copy
# 이와같이 매개변수에 True or False 값이 들어가야하는 상황에서는
# True일 경우, 입력을 생략할 수있고, 입력을 생략할경우 True로 실행된다.
def sortSelectAlgorithm(ns, asc=True):
c_ns = copy.copy(ns)
for i in range(len(c_ns)-1):
minIdx = i
for j in range(i+1, len(c_ns)):
# 오름차순, ascending
if asc:
if c_ns[minIdx] > c_ns[j]:
minIdx = j
# 내림차순, descending
else:
if c_ns[minIdx] < c_ns[j]:
minIdx = j
c_ns[i], c_ns[minIdx] = c_ns[minIdx], c_ns[i]
print(f'nums: {c_ns}')
return c_ns
두번째 파일
ex
import random as rd
import selectMod
if __name__ == '__main__':
nums = rd.sample(range(1,21),10)
# 오름차순
print(f'not sorted nums: \t{nums}')
print()
result = selectMod.sortSelectAlgorithm(nums)
print(f'sorted nums by ASC: {result}')
print()
# 내림차순
print(f'not sorted nums: \t{nums}')
print()
result = selectMod.sortSelectAlgorithm(nums,asc=False)
print(f'sorted nums by ASC: {result}')
실행결과
not sorted nums: [3, 19, 8, 12, 5, 7, 13, 2, 16, 18]
nums: [2, 19, 8, 12, 5, 7, 13, 3, 16, 18]
nums: [2, 3, 8, 12, 5, 7, 13, 19, 16, 18]
nums: [2, 3, 5, 12, 8, 7, 13, 19, 16, 18]
nums: [2, 3, 5, 7, 8, 12, 13, 19, 16, 18]
nums: [2, 3, 5, 7, 8, 12, 13, 19, 16, 18]
nums: [2, 3, 5, 7, 8, 12, 13, 19, 16, 18]
nums: [2, 3, 5, 7, 8, 12, 13, 19, 16, 18]
nums: [2, 3, 5, 7, 8, 12, 13, 16, 19, 18]
nums: [2, 3, 5, 7, 8, 12, 13, 16, 18, 19]
sorted nums by ASC: [2, 3, 5, 7, 8, 12, 13, 16, 18, 19]
not sorted nums: [3, 19, 8, 12, 5, 7, 13, 2, 16, 18]
nums: [19, 3, 8, 12, 5, 7, 13, 2, 16, 18]
nums: [19, 18, 8, 12, 5, 7, 13, 2, 16, 3]
nums: [19, 18, 16, 12, 5, 7, 13, 2, 8, 3]
nums: [19, 18, 16, 13, 5, 7, 12, 2, 8, 3]
nums: [19, 18, 16, 13, 12, 7, 5, 2, 8, 3]
nums: [19, 18, 16, 13, 12, 8, 5, 2, 7, 3]
nums: [19, 18, 16, 13, 12, 8, 7, 2, 5, 3]
nums: [19, 18, 16, 13, 12, 8, 7, 5, 2, 3]
nums: [19, 18, 16, 13, 12, 8, 7, 5, 3, 2]
sorted nums by ASC: [19, 18, 16, 13, 12, 8, 7, 5, 3, 2]
Process finished with exit code 0
'개발일지 > Python' 카테고리의 다른 글
파이썬 최대값 알고리즘 (0) | 2022.05.21 |
---|---|
파이썬 재귀함수를 이용한 병합정렬 알고리즘 (0) | 2022.05.21 |
삽입정렬 알고리즘 (오름차순, 내림차순) (0) | 2022.05.21 |
파이썬 [복기] 무한반복 계산기, 종료입력으로 종료. (0) | 2022.05.21 |
파이썬 class(클래스) 상속 기초원리7 추상클래스 ABCMeta, abstractmethod (0) | 2022.05.20 |