본문 바로가기
코딩 어쩌구/자료구조와 알고리즘

[온라인 : 기본 알고리즘] 선택정렬, 삽입정렬, 퀵정렬, 계수정렬

by annmunju 2022. 2. 21.

 

# 선택정렬

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