首页 > 解决方案 > 使用递归而不是python中的循环将列表a按值升序排序

问题描述

python - 如何使用递归而不是python中的循环按值对列表进行升序排序?例如,将 [2,0,1] 排序为 [0,1,2]。

def sort(a):  

    pos = 0
    if pos == 0 or a[pos] >= a[pos - 1]:
        pos += 1
        return sort(a)
    else: 
        a[pos], a[pos-1] = a[pos-1], a[pos]
        pos -= 1
        return sort(a)

这是我写的,我知道它不起作用,因为 pos 一开始总是等于 0。我该如何解决?

我测试下面的代码。 在此处输入图像描述

标签: python

解决方案


基于这个答案快速排序是递归排序算法的一个例子,可以像这样在 Python 中实现:

def quick_sort(l):
    if len(l) <= 1:
        return l
    else:
        return quick_sort([e for e in l[1:] if e <= l[0]]) + [l[0]] +\
            quick_sort([e for e in l[1:] if e > l[0]])

推荐阅读