퀵정렬(List comprehension)

박원종·2021년 3월 2일
0

Algorithm

목록 보기
1/6

C언어로는 알고리즘의 한계를 느끼고 파이썬으로 알고리즘을 공부하고 있는데
아무래도 파이썬의 문법이 나는 아직까지 너무 부족하다

그래서 오늘은 아주 기본적인 퀵정렬에 대해서 파이썬답게 구현하는 방식에 대해서
공부하다가 매력적인 부분을 발견해서 블로그를 작성하게되었다.

코드

array=[5,7,9,0,3,1,6,2,4,8]

def quick_sort(array):
  if len(array) <= 1:
    return array
  pivot = array[0]
  tail = array[1:]

  left_side = [x for x in tail if x < pivot]
  right_side = [x for x in tail if x > pivot]

  return quick_sort(left_side) + [pivot] + quick_sort(right_side)

print(quick_sort(array))

위에 코드 중 left_sideright_side가 내가 놀란 부분, List comprehension 이다

  1. for 문에서 tail의 모든 원소에 접근해 x를 초기화하고
  2. 각 루프마다 x와 pivot을 비교해서 만족하는 x만
  3. 맨 앞의 x에 넣어주고 리스트로 만드는 방식이다.

파이썬은 직관적이여서 쉽다고하던데 C와 java를 해오던 나에겐
문법에 고정관념에서 너무 벗어나서 가끔 난해할때가 있다....
적응되면 확실히 구현할 때 편할것 같긴하다.

profile
잡코딩

0개의 댓글