선택 정렬은 주어진 배열에서 최솟값(최댓값)을 찾아 맨 왼쪽(오른쪽) 값과 교체한다. 최대값을 찾아야 하므로 정렬 상태와 관계없이 언제나 O(n2)의 시간복잡도를 가진다.
- 내가 짠 코드
def selection_sort(list1):
for i in range(len(list1)):
min_num = list1[i]
for j in range(i,len(list1)):
if min_num >= list1[j]:
min_num = list1[j]
min_index = j
list1[min_index], list1[i] = list1[i], list1[min_index]
min_index = i+1
return list1
list1 = [9,1,6,8,4,3,2,0,5,7]
print(selection_sort(list1))
def selectionSort(x):
for size in reversed(range(len(x))):
max_i = 0
for i in range(1, 1+size):
if x[i] > x[max_i]:
max_i = i
x[max_i], x[size] = x[size], x[max_i]
x = [9,1,6,8,4,3,2,0,5,7]
print(selectionSort(x))
- hello coding 그림으로 개념을 이해하는 알고리즘
def findSmallest(arr):
smallest = arr[0]
smallest_index = 0
for i in range(1, len(arr)):
if arr[i] < smallest:
smallest = arr[i]
smallest_index = i
return smallest_index
def selectionSort(arr):
newArr = []
for i in range(len(arr)):
smallest = findSmallest(arr)
newArr.append(arr.pop(smallest))
return newArr
arr = [9,1,6,8,4,3,2,0,5,7]
print(selectionSort(arr))
Comments