Algorithm

Quick Sort, Binary Search

James Kim_SST 2019. 7. 26. 22:21

취업을 준비하며 자소서쓰고 면접 준비만 하면서.. 기술면접을 준비하려고보니 자료구조, 알고리즘 개념이 흐릿해진 것 같아 조금씩 코드를 작성하고 올려보려고 한다.

오늘은 Sorting Algorithm 중에서 가장 빠르다고 알려져 있는 Quick Sort이다.

O(nlog₂n)의 시간 복잡도를 가졌고, Python의 함수들은 Quick sort 혹은 Quick을 변형시킨 알고리즘을 사용한다고 한다.

 

필요한 요소는 이렇다.

pivot : 이 지점을 기준으로 리스트를 나눈다

less_list : pivot보다 작은 리스트

greater_list : pivot 보다 큰 리스트

eqaul_list : pivot과 같은 리스트

 

def quick(arr):
    if len(arr) <= 1:
        return arr

    pivot = arr[len(arr)//2] # " //2 " 는 정수 몫으로 반환
    less, greater, equal = [], [] ,[]
    for num in arr:
        if (pivot > num) :
            less.append(num)
        elif (pivot < num ):
            greater.append(num)
        else:
            equal.append(num)
    return quick(less) + equal + quick(greater)

print(quick([4,64,2,42,62,4,123,4123,46,3,3,1]))