빠른 정렬python 구현: 귀속과 비귀속
1417 단어 ***
반복 버전
def quick_sort(li, start, end):
if start >= end:
return
left = start
right = end
mid = li[left]
while left < right:
while left < right and li[right] >= mid:
right -= 1
li[left] = li[right]
while left < right and li[left] < mid:
left += 1
li[right] = li[left]
li[left] = mid
quick_sort(li, start, left-1)
quick_sort(li, left+1, end)
반복되지 않는 버전
비귀속 버전은 창고의 사상을 이용하여 계속 정렬해야 하는 마무리 표시를 창고에 저장하고 끊임없이 창고를 나누어 조작해야 한다.
def quick_sort(arr):
#
if len(arr) < 2:
return arr
stack = []
stack.append(len(arr)-1)
stack.append(0)
while stack:
l = stack.pop()
r = stack.pop()
index = partition(arr, l, r)
if l < index - 1:
stack.append(index - 1)
stack.append(l)
if r > index + 1:
stack.append(r)
stack.append(index + 1)
def partition(arr, start, end):
# ,
pivot = arr[start]
while start < end:
while start < end and arr[end] >= pivot:
end -= 1
arr[start] = arr[end]
while start < end and arr[start] <= pivot:
start += 1
arr[end] = arr[start]
# start = end
arr[start] = pivot
return start
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
빠른 정렬python 구현: 귀속과 비귀속텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.