# 선택정렬
def choiceFunc(ls) :
for i in range(len(ls)):
min_index = i
for j in range(i+1, len(ls)):
if ls[min_index] > ls[j]:
min_index = j
ls[i], ls[min_index] = ls[min_index], ls[i]
return ls
# 삽입정렬
def insertionFunc(ls):
for i in range(1,len(ls)):
for j in range(i, 0, -1):
if ls[j] < ls[j-1]:
ls[j], ls[j-1] = ls[j-1], ls[j]
else :
break
return ls
# 퀵정렬
def quickSort(array, start, end):
if start >= end:
return
pivot = start
left = start + 1
right = end
while left <= right:
while left <= end and array[left] <= array[pivot]:
left += 1
while right > start and array[right] >= array[pivot]:
right -= 1
if left > right:
array[right], array[pivot] = array[pivot], array[right]
else :
array[left], array[right] = array[right], array[left]
quickSort(array, start, right - 1)
quickSort(array, right + 1, end)
def quickSort2(array):
if len(array) <= 1:
return array
pivot = array[0]
tail = array[1:]
left = [x for x in tail if x <= pivot]
right = [x for x in tail if x > pivot]
return quickSort2(left) + [pivot] + quickSort2(right)
# 계수정렬
array = [1, 7, 8, 2, 8, 3, 4, 6, 1, 0, 5, 2]
count = [0] * (max(array)+1)
for i in range(len(array)):
count[array[i]] += 1
for i in range(len(count)):
for j in range(count[i]):
print(i, end=' ')
728x90
'코딩 어쩌구 > 자료구조와 알고리즘' 카테고리의 다른 글
[온라인 : 기본 알고리즘] 다이나믹 프로그래밍 (0) | 2022.04.15 |
---|---|
[온라인 : 기본 알고리즘] 그래프 탐색 (0) | 2022.03.01 |
[온라인 : 기본 알고리즘] 바이너리 인덱스 트리 (0) | 2022.01.24 |
[온라인 : 기본 알고리즘] 스택, 큐, 힙, 이진탐색 (0) | 2022.01.24 |
[특강] 자료구조와 알고리즘 (0) | 2022.01.12 |