'Quick Sort'에 해당되는 글 1건

  1. 2010.06.10 Quick Sort
Coding/Python 삽질기2010. 6. 10. 22:46


 Haskell로 Quick Sort를 만들면 2줄로 간단히 나온다.

quicksort []       =  []
quicksort (x:xs)  = quicksort[y | y <- xs, y < x] ++ [x] ++ quicksort[y | y <- xs, y >= x]


Python 도 유사하게 구현이 가능하다.
 

import random

def qsort(list):
   
    if len(list) <= 1:
        return list

    pivot = random.choice(list)
    list.remove(pivot)
   
    return qsort([it for it in list if it < pivot]) + [pivot] + qsort([it for it in list if it >= pivot])


* Test code

#----------------------------------------------------------
# main
if __name__ == "__main__":

    before_sort = [1, 4, 2, 7, 9, 8, 3, 6, 5, 5]
    random.seed()

    print before_sort;
    after_sort = qsort(before_sort)
    print after_sort;  


* 실행결과
[1, 4, 2, 7, 9, 8, 3, 6, 5, 5]
[1, 2, 3, 4, 5, 5, 6, 7, 8, 9]

'Coding > Python 삽질기' 카테고리의 다른 글

100!  (0) 2010.07.08
[Python] Simple template maker  (0) 2010.02.02
[Python] 짧은 코드 모음  (0) 2010.01.22
Posted by chobocho