본문 바로가기

공부/자료 구조 및 알고리즘

퀵정렬 (Quick Sort) - python

def partition(arr, start, end):
    pivot = start
    greater = start + 1
    less = end

    while greater <= less:
        while greater <= end and arr[greater] <= arr[pivot]:
            greater += 1
        
        while less > start and arr[less] >= arr[pivot]:
            less -= 1
        
        if greater < less:
            arr[greater], arr[less] = arr[less], arr[greater]
        
        else:
            arr[pivot], arr[less] = arr[less], arr[pivot]

    return less

def quickSort(arr, start, end):
    if start >= end:
        return
    k = partition(arr, start, end)

    quickSort(arr, start, k - 1)
    quickSort(arr, k + 1, end)


arr = [31, 53, 75, 42, 15, 64, 31] #정렬할 배열
print("[정렬되지 않은 배열]")
print(arr)
print()

start = 0
end = len(arr) - 1

quickSort(arr, start, end)

print("[정렬 완료된 배열]")
print(arr)
[정렬되지 않은 배열]
[31, 53, 75, 42, 15, 64, 31]

[정렬 완료된 배열]
[15, 31, 31, 42, 53, 64, 75]