Быстрая сортировка с использованием среднего элемента не дает правильного ответа - PullRequest
0 голосов
/ 16 марта 2020

Я реализую быструю сортировку, используя середину в качестве элемента поворота. Вот моя реализация;

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]

Кажется, он застревает. Могу ли я получить совет по его устранению? Заранее спасибо.

...