선택정렬
선택 정렬이란 가장 작은(혹은 큰) 원소를 선택하여 그 값을 맨앞에 위치한 값과 바꿔주는 정렬이다.
시간복잡도: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 |