분할정복 개념 :"어려운 문제를" 잘게 "쪼개서" divide 작게 쪼개진 문제 "문제" 하나씩
"해결"함으로써 "작은 solution"이 모여서 전체 문제에 대한 "solution"을 구하는기법
def quick_sort(li, start, end):
#base case
#to do
if start >= end:
return
left=start
right=end
pivot=li[(left+right)//2]
while left <= right:
while li[left] < pivot:
left+=1
while pivot < li[right]:
right-=1
if left <= right:
li[left], li[right] = li[right],li[left]
left+=1
right-=1
quick_sort(li, start, right)
quick_sort(li, left, end)
import random
if __name__=="__main__":
while True:
num_data=int(input('데이터 개수(종료:0):'))
if not num_data:
break
data=[random.randint(1, 100) for _ in range(num_data)]
print(data)
quick_sort(data, 0, len(data)-1)
print(data)
반응형
'공부 > TIL-D' 카테고리의 다른 글
프로세스/스레드 CONTEXT SWITCHING (0) | 2019.04.23 |
---|---|
O(빅오) , 메모리계층 (0) | 2019.04.22 |
함수 (0) | 2019.04.20 |
오늘 배움에 - 깊이를(연산,가위바위보,버블소트) (0) | 2019.04.19 |
오늘 배운것 자세히 (0) | 2019.04.18 |