【问题标题】:Quick sort is recurring infinitely快速排序无限循环
【发布时间】:2020-04-29 14:24:23
【问题描述】:

首先,我要提前感谢您。 我试图在python3中编写一个快速排序,但它会无限重复。
这是我的代码:

def partition(lst, l, h):
    lst.append(float("inf"))
    pivot = lst[0]
    i, j = l+1, h
    while i < j:
        while lst[i] < pivot:
            i += 1
        while lst[j] > pivot:      
            j -= 1
        if i < j:
            lst[i] , lst[j] = lst[j], lst[i]
        else:
            lst = lst[1:i] + [pivot] + lst[i:]
    return lst[:-1], i

def quickSort(lst, l, h):
    if l < h-1:
        mid = (l + h)//2
        lst[l:h], mid = partition(lst[l:h], 0, h-l)
        quickSort(lst, l, mid)
        quickSort(lst, mid, h)
        lst1 = [10, 12, 8, 16, 2, 6, 3, 9, 5]
        quickSort(lst1, 0, 9)

【问题讨论】:

    标签: python-3.x algorithm sorting


    【解决方案1】:

    在递归算法中,您应该小心算法的初始步骤。例如,在您的情况下,您需要手动对给定数组进行排序,而不需要任何大小为 2 的递归。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-21
      • 2021-10-08
      • 2012-01-07
      • 2016-05-05
      • 2014-05-07
      • 1970-01-01
      相关资源
      最近更新 更多