본문 바로가기

Python/알고리즘 및 자료구조

선택정렬

선택정렬

선택 정렬이란 가장 작은(혹은 큰) 원소를 선택하여 그 값을 맨앞에 위치한 값과 바꿔주는 정렬이다.

 

시간복잡도:O(n2)

 

 

def select_sort(li):
    for i in range(0,len(li),1): # 0 부터 배열의 길이 -1 만큼 반복
        min = i #i 를 min 에 저장(최소값의 인덱스)
        for j in range(i,len(li),1):#i 부터 배열의길이 -1 만큼 반복
            if li[min] > li[j]: #인덱스 min 자리보다 j의 자리가 더 클 경우
                min = j # min 을 j 로 변경
        temp = li[i]    #비교 후 i 인덱스 의 값을
        li[i] = li[min] # min 인덱스 의 값과 변경
        li[min] = temp
        print(li)
    return li
select_list = select_sort([1,5,10,2,3,100,50,30,23])
print("최종결과")
print(select_list)

 

실행결과

[1, 5, 10, 2, 3, 100, 50, 30, 23]
[1, 2, 10, 5, 3, 100, 50, 30, 23]
[1, 2, 3, 5, 10, 100, 50, 30, 23]
[1, 2, 3, 5, 10, 100, 50, 30, 23]
[1, 2, 3, 5, 10, 100, 50, 30, 23]
[1, 2, 3, 5, 10, 23, 50, 30, 100]
[1, 2, 3, 5, 10, 23, 30, 50, 100]
[1, 2, 3, 5, 10, 23, 30, 50, 100]
[1, 2, 3, 5, 10, 23, 30, 50, 100]

최종결과
[1, 2, 3, 5, 10, 23, 30, 50, 100]

'Python > 알고리즘 및 자료구조' 카테고리의 다른 글

스택(Stack)  (0) 2021.03.07
퀵 정렬(quick sort)  (0) 2021.03.06
합병 정렬(merge sort)  (0) 2021.03.05
팩토리얼(factorial)과 재귀호출  (0) 2021.03.04
버블정렬(Bubble Sort)  (0) 2021.03.04