본문 바로가기
Make the Learning Curve/Python

[알고리즘] 선택 정렬

by 에이도 2020. 12. 18.

 

 

선택 정렬 

: 매번 조건에 맞게 선택하는 알고리즘

ex) 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸고,

     그 다음 작은 데이터를 선택해 앞에서 두번째 데이터와 바꾸는 과정 등

 

array = [6,8,0,1,3,5,74,3,7,85,36]

for i in range(len(array)):
    currrent_index = i
   
    for j in range(i+1,len(array)):
        if array[currrent_index] > array[j]:
            currrent_index = j
            
            
    if array[i] != array[currrent_index]:
        array[i], array[currrent_index] = array[currrent_index], array[i],

        print(array)

print('최종 배열 :', array)


[out]

[0, 8, 6, 1, 3, 5, 74, 3, 7, 85, 36]
[0, 1, 6, 8, 3, 5, 74, 3, 7, 85, 36]
[0, 1, 3, 8, 6, 5, 74, 3, 7, 85, 36]
[0, 1, 3, 3, 6, 5, 74, 8, 7, 85, 36]
[0, 1, 3, 3, 5, 6, 74, 8, 7, 85, 36]
[0, 1, 3, 3, 5, 6, 7, 8, 74, 85, 36]
[0, 1, 3, 3, 5, 6, 7, 8, 36, 85, 74]
[0, 1, 3, 3, 5, 6, 7, 8, 36, 74, 85]
최종 배열 : [0, 1, 3, 3, 5, 6, 7, 8, 36, 74, 85]

i : 가장 작은 데이터가 올 index 

currrent_index : 가장 작은 데이터를 찾아가는 index 

j : i+1번째부터 자료내의 끝까지 달려가는 index  

 

Loop

이를통해 j가 1씩 증가하며 1자리씩 탐색합니다. 

currrent_index의 값이 j번째 값보다 더 크다면  

j번째 값이 더 작기때문에

currrent_index의 index를 j로 할당함을 반복하여 

i번째 데이터 기준으로 자료의 끝까지 탐색하여 가장 작은 데이터 값을 i번째 데이터로 가져옵니다. 

 

 

댓글