본문 바로가기

카테고리 없음

[Python] Quick_sort 구현 - non-iterative, recursive function

import random
import time

def qsort(a):
    if not a:
        return []
    pivot = a[0]
    left = []
    right = []
    i = 1
    while i < len(a):
        if a[i] < pivot:
            left.append(a[i])
        else:
            right.append(a[i])
        i+=1
    
    return qsort(left) + [pivot] + qsort(right)

if __name__ == "__main__":
    start = time.time()
    sum = 0
    data = [3,1,-5,7,-4,2,6,200,9,-2,4,3,0,-2] + [100] * 100000
    for _, val in zip(range(20), qsort(data)):
        sum += val * val
        if sum > 50:
            print('Sum = ', sum)

    print(f'1000을 넘지 않은 최대 sum : {sum}')
    print(f'경과 시간 : {int((time.time()-start)*1000)}ms')