본문 바로가기
코딩 연습/파이썬 기초(예제)

[python] 파이썬 알고리즘 - 선택정렬(Selection Sort)

by good4me 2020. 9. 9.

goodthings4me.tistory.com

파이썬 선택정렬 - 정렬되지 않은 값등 중에서 가장 작은 값을 찾아서 제일 앞의 값과 교환하는 방식으로 정렬

 

 

■ 선택정렬(Selection Sort) - 오름차순으로 정렬해보기

import random

unorder_num =[]

# 정렬되지 않은 숫자 추출하여 리스트에 넣기
for n in range(10):
    unorder_num.append(random.randint(1, 100))
print(unorder_num)

index = 0

for i in range(len(unorder_num)):
    base = max(unorder_num)+1 # 비교할 기준 숫자, 리스트의 최대값+1로 구함
    
    for j in range(i, len(unorder_num)):
        if base > unorder_num[j]:
            base = unorder_num[j]
            index = j
    unorder_num[index], unorder_num[i] = unorder_num[i], unorder_num[index] 
        
print(unorder_num)


# 다른 방법 =======================

for n in range(len(unorder_num)-1):
    for m in range(n + 1, len(unorder_num)):
        if unorder_num[n] > unorder_num[m]: # 앞, 뒤 바로 교환 위한 조건
            unorder_num[n],unorder_num[base] = unorder_num[base], unorder_num[n]
print(unorder_num)



'''
예시) 처리 절차 i, index
[34, 45, 23, 36, 25]
46 > 34 T, i=0, index=0
34 > 45 F, i=0, index=0
34 > 23 T, i=0, index=2
23 > 36 F, i=0, index=2
23 > 25 F, i=0, index=2, End
u_num[2], u_num[0] = u_num[0], u_num[2]
[23, 45, 34, 36, 25]
46 > 45 T, i=1, index=1
45 > 34 T, i=1, index=2
34 > 36 F, i=1, index=2
34 > 25 T, i=1, index=4, End
u_num[4], u_num[1] = u_num[1], u_num[4]
[23, 25, 34, 36, 45]
46 > 34 T, i=2, index=2
34 > 36 F, i=2, index=2
34 > 45 F, i=2, index=2, End
u_num[2], u_num[2] = u_num[2], u_num[2]
[23, 25, 34, 36, 45]
46 > 36 T, i=3, index=3
36 > 45 F, i=3, index=3, End
u_num[3], u_num[3] = u_num[3], u_num[3]
[23, 25, 34, 36, 45]
46 > 45 T, i=4, index=4, End
u_num[4], u_num[4] = u_num[4], u_num[4]
[23, 25, 34, 36, 45]
'''

good4me.co.kr

댓글