Python 快速排序用户输入10或8个整数

Python 快速排序用户输入10或8个整数,python,Python,尝试通过递归创建带有用户输入的双枢轴,尽管递归可以省略,但如何将输入/整数放入列表中,然后根据所示的快速排序公式进行排序 def swap(lst, i, j): if min(i,j) >= 0 and max(i,j) < len(lst) and i != j: lst[i], lst[j] = lst[j], lst[i] def dpquicksort(lst, left=0, right=None): if right is None:

尝试通过递归创建带有用户输入的双枢轴,尽管递归可以省略,但如何将输入/整数放入列表中,然后根据所示的快速排序公式进行排序

def swap(lst, i, j):
    if min(i,j) >= 0 and max(i,j) < len(lst) and i != j:
        lst[i], lst[j] = lst[j], lst[i]

def dpquicksort(lst, left=0, right=None):
    if right is None:
        right = len(lst) - 1     
    if right - left >= 1:
        p = min(lst[left], lst[right])
        q = max(lst[left], lst[right])
        l = left + 1
        g = right - 1
        k = l        
        while k <= g:
            if lst[k] < p:
                swap(lst, k, l)
                l += 1
            elif lst[k] >= q:
                while lst[g] > q and k < g:
                    g -= 1
                swap(lst, k, g)
                g -= 1
                if lst[k] < p:
                    swap(lst, k, l)
                    l += 1
            k += 1
        l -= 1
        g += 1
        swap(lst, left, l)
        swap(lst, right, g)
        dpquicksort(lst, left, l-1)
        dpquicksort(lst, l+1, g-1)
        dpquicksort(lst, g+1, right)
        return right

def quickSortHelper(alist, first, last):
    if first<last:
        splitpoint= partition(alist, first, last)
        quickSortHelper(alist, first, splitpoint-1)
        quickSortHelper(alist, splitpoint+1, last)

def quicksort(lst):
    dpquicksort(lst, 0, len(lst)-1)
    print(lst)
lst = [54,26,93,17,77,31,44,55,20]    
#lst = int(input("enter integers: ")) 
quicksort(lst)
lst = [54,6,93,17,7,1,44,55,20]
#lst = [2, 4, 6, 8, 10, 12, 14, 16, 18]
quicksort(lst)
def交换(lst、i、j): 如果最小值(i,j)>=0,最大值(i,j)=1: p=最小值(左上角,右下角) q=最大值(左上角,右下角) l=左+1 g=右-1 k=l 当k=q时: 当lst[g]>q和k如果首先可以使用map和int内置

>>> lst = list(map(int,input("enter integers: ").split()))
enter integers: 2 3 8 1 3 4 1 8 9 2
>>> lst
[2, 3, 8, 1, 3, 4, 1, 8, 9, 2]
或列表理解

[int(num) for num in input("enter integers: ").split()]
这取决于你,把它放在顶部或底部都可以。你的代码变成

def swap(lst, i, j):
    if min(i,j) >= 0 and max(i,j) < len(lst) and i != j:
        lst[i], lst[j] = lst[j], lst[i]

def dpquicksort(lst, left=0, right=None):
    if right is None:
        right = len(lst) - 1     
    if right - left >= 1:
        p = min(lst[left], lst[right])
        q = max(lst[left], lst[right])
        l = left + 1
        g = right - 1
        k = l        
        while k <= g:
            if lst[k] < p:
                swap(lst, k, l)
                l += 1
            elif lst[k] >= q:
                while lst[g] > q and k < g:
                    g -= 1
                swap(lst, k, g)
                g -= 1
                if lst[k] < p:
                    swap(lst, k, l)
                    l += 1
            k += 1
        l -= 1
        g += 1
        swap(lst, left, l)
        swap(lst, right, g)
        dpquicksort(lst, left, l-1)
        dpquicksort(lst, l+1, g-1)
        dpquicksort(lst, g+1, right)
        return right

def quickSortHelper(alist, first, last):
    if first<last:
        splitpoint= partition(alist, first, last)
        quickSortHelper(alist, first, splitpoint-1)
        quickSortHelper(alist, splitpoint+1, last)

def quicksort(lst):
    dpquicksort(lst, 0, len(lst)-1)
    print(lst)
lst = list(map(int,input("enter integers: ").split()))
quicksort(lst)
def交换(lst、i、j): 如果最小值(i,j)>=0,最大值(i,j)=1: p=最小值(左上角,右下角) q=最大值(左上角,右下角) l=左+1 g=右-1 k=l 当k=q时: 当lst[g]>q和k如果首先您的问题是“如何让用户输入整数数组”?可能重复的是用户如何输入8个或10个不同的整数,甚至6个,那么我应该从代码的顶部开始,让用户输入整数列表,还是它位于该函数的底部?它对您有帮助吗?map&int内置,现在只显示输入,但不再对其进行快速排序,因此快速排序不再被激活,我必须在这里做一些不正确的事情