[크래프톤 정글] | 8일

SpongeCake·2023년 4월 10일
0
post-thumbnail

🗒️ Quick sort

이상적인 퀵 정렬의 모습

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

def quick(a,start,end):
    if start >= end : return

    pl = start + 1 # 피벗 오른쪽 부터 start
    pr = end # 배열 끝
    pivot = start # 피봇 인덱스

    while pl <= pr : # pl, pr 인덱스 뒤바뀌면 종료
        while  pl <= end and a[pl] <= a[pivot] : pl +=1 # pl이 배열값 이상 초과하지 않도록 and a[pl] 값이 a[pivot] 값 보다 작으면 다음 인덱스 탐색
        while  pr > start and a[pr] >= a[pivot] : pr -=1 # pr이 start보다 크고(인덱스 0이하로 떨어지는 에러 발생 방지) and a[pr]이 a[pivot]보다 크거나 같으면 다음 탐색 
        if pl > pr: # 탐색하고 pl이 pr보다 크면 pivot과 pr 교체 -> a[pl]과 a[pr]중 작은 값을 피봇과 교체해야 왼쪽 오른쪽으로 정렬이됨
            a[pr] , a[pivot] = a[pivot], a[pr]
            
        else:
            a[pl], a[pr] = a[pr] , a[pl]

    quick(a,start,pr -1) # 왼쪽 퀵 정렬 - 시작부터 pr -1 까지
    quick(a,pr+1, end) # 오른쪽 퀵 정렬 - pr +1 부터 끝까지
    


if __name__ == '__main__':
    # 피벗 설정

    quick(a,0,len(a)-1)
    print(a)

파이썬의 장점을 이용한 퀵 정렬

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

def quick(a):
    if len(a) <=1:
        return a
    pivot = a[0]
    tail = a[1:]

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

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


if __name__ == '__main__':
    # 피벗 설정

    print(quick(a))

-> 아래의 방법은 배열을 계속해서 생성해서 메모리 , 시간으로 초과 될 가능성 있음











선택이 운명을 결정한다.

" 시상대와 감옥은 전혀 다른 곳이야. 하나는 높고 하나는 낮지. 하지만 이 두 장소 모두 우리가 자유롭게 선택한 일의 결과에서 비롯된다네. "

- 에픽테토스, 대화록, 2.6.25

그 어떤 상황에 부닥쳤든 중요한 것은 이것이다. 선택의 자유. 우리가 누구이든 또 어디에 있든 무엇을 선택하느냐가 가장 중요하다.


과거는 과거일 뿐이다.

" 사고의 심지를 자르지 않는 한, 우리의 도덕적 원칙은 소멸할 수 없다. 우리가 가진 이 권한으로 새로운 불꽃이 지속적으로 피어오르게 하라. 다시 인생을 시작하는 것도 가능하다. 예전에 했던 것처럼 세상을 다시 바라보라. 이를 통해 새로운 삶이 시작 된다. "

- 마르쿠스 아우렐리우스, 명상록, 7.2

10년 전에 일어난 일이든 10분 전에 일어난 일이든 모두 지난 과거일 뿐이다. 원한다면 다시 시작할 수 있다. 지금 당장 하지 못할 이유는 없다.


아침에 해야 할 질문들

" 아침이 되면 가장 먼저 아래의 것들을 자신에게 질문하라."

  • 무엇이 나를 걱정으로부터 자유롭지 못하게 했는가?
  • 평온함이란 무엇인가?
  • 무엇이 나인가? 육체, 소유한 자산, 아니면 명성? 이것들이 아니면 무엇인가?
  • 이성적인 존재, 그것은 무엇을 말하는가?
  • 나에게 요구되는 것은 무엇인가? 나의 행동에 대해 명상하라.
  • 어떻게 해서 나는 평온함으로부터 멀어지게 되었는가?
  • 불친절하고, 비사교적이고, 무정한 것들을 어떻게 해야 하는가?
  • 나는 왜 이 모든 것들에 대해 실패를 거듭하는가?


    - 에픽테토스, 대화록, 4.6-34-35

성공한 사람들은 대부분 자신만의 아침 습관이 있다.
매일 아침 질문을 스스로에게 던져보자. 사색에 잠기는 것은 인생에 대해 더 나은 답을 얻고자 하는 분주한 노력이다.


profile
٩( 'ω' )و

0개의 댓글