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