使用python只有一个参数的稳定快速排序

时间:2015-01-24 00:01:53

标签: python sorting quicksort

我是一名初学者,正在尝试解决" Stable quicksort只传递一个参数。"稳定的快速排序意味着它在分割数组时保留原始序列。 (例如,[3,5,4,2,1] => [2,1,3,5,4]而不是[2,1,3,4,5]) 该问题的另一个限制是在分区函数和快速排序函数中仅使用一个参数。

以下是我在python中实现的内容:

def partition(A):
    p=A[0]
    j=0
    for i in range(1,len(A)):
        if p > A[i]:
            w=i
            while A[w]<p and w>j:
                A[w],A[w-1]=A[w-1],A[w]
                w=w-1
            j=j+1
    return j

def quickSort(A):
    if len(A)>1:
        p=partition(A)
        quickSort(A[:p])
        quickSort(A[(p+1):])
        print A

这是我的问题:当我使用A [:p](前半部分)和A [(p + 1):](后半部分)进行递归时,它并没有真正对数组A进行排序本身但是对A的副本进行排序。因此,当我为A = [3,5,4,2,1]调用quickSort时,即使子数组正确,最终结果也是错误的。

In[137]: quickSort(A)
[1, 2]
[4, 5]
[2, 1, 3, 5, 4]

任何人都可以请教我这个吗? 在python中绝对没有办法解决这种受约束的快速排序吗?

0 个答案:

没有答案