Я реализую быструю сортировку, используя середину в качестве элемента поворота. Вот моя реализация;
def partition1(arr,low,high):
pivot = (low+high)//2 # pivot
#print (low,high)
while low<=high:
#print (low,high)
# If current element is smaller than the pivot
while arr[low]<arr[pivot]:
low+=1
#print (low,high)
if low>high:
return low
#break
while arr[high]>arr[pivot]:
high-=1
arr[low],arr[high] = arr[high],arr[low]
low+=1
high-=1
return low
def quick_Sort(arr,low,high):
if low < high:
#print(arr)
# pi is partitioning index, arr[p] is now
# at right place
pi = partition1(arr,low,high)
print(pi)
# Separately sort elements before
# partition and after partition
quick_Sort(arr, low, pi-1)
quick_Sort(arr, pi+1, high)
Вот пример, на котором я ее тестирую;
quick_Sort([-1,6,4,2,3,1],0,5)
Но мой код обеспечивает следующий вывод;
[-1, 1, 3, 2, 4, 6]
[-1, 1, 3, 2, 4, 6]
[-1, 1, 3, 2, 4, 6]
Кажется, он застревает. Могу ли я получить совет по его устранению? Заранее спасибо.