forked from ndb796/python-for-coding-test
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path4.py
25 lines (23 loc) Β· 1.04 KB
/
4.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
array = [5, 7, 9, 0, 3, 1, 6, 2, 4, 8]
def quick_sort(array, start, end):
if start >= end: # μμκ° 1κ°μΈ κ²½μ° μ’
λ£
return
pivot = start # νΌλ²μ 첫 λ²μ§Έ μμ
left = start + 1
right = end
while(left <= right):
# νΌλ²λ³΄λ€ ν° λ°μ΄ν°λ₯Ό μ°Ύμ λκΉμ§ λ°λ³΅
while(left <= end and array[left] <= array[pivot]):
left += 1
# νΌλ²λ³΄λ€ μμ λ°μ΄ν°λ₯Ό μ°Ύμ λκΉμ§ λ°λ³΅
while(right > start and array[right] >= array[pivot]):
right -= 1
if(left > right): # μκ°λ Έλ€λ©΄ μμ λ°μ΄ν°μ νΌλ²μ κ΅μ²΄
array[right], array[pivot] = array[pivot], array[right]
else: # μκ°λ¦¬μ§ μμλ€λ©΄ μμ λ°μ΄ν°μ ν° λ°μ΄ν°λ₯Ό κ΅μ²΄
array[left], array[right] = array[right], array[left]
# λΆν μ΄ν μΌμͺ½ λΆλΆκ³Ό μ€λ₯Έμͺ½ λΆλΆμμ κ°κ° μ λ ¬ μν
quick_sort(array, start, right - 1)
quick_sort(array, right + 1, end)
quick_sort(array, 0, len(array) - 1)
print(array)