了解quicksort python实现

时间:2014-12-07 08:55:12

标签: python quicksort

我在网上找到了这个代码。

def quick_sort(items):
""" Implementation of quick sort """
if len(items) > 1:
    pivot_index = len(items) / 2
    smaller_items = []
    larger_items = []
    for i, val in enumerate(items):
        if i != pivot_index:
            if val < items[pivot_index]:
                smaller_items.append(val)
            else:
                larger_items.append(val)

    quick_sort(smaller_items)
    quick_sort(larger_items)
    items[:] = smaller_items + [items[pivot_index]] + larger_items

给我带来麻烦的那一行是最后一行。我认为这是基本连接,但是,当我将“items [:]”更改为“items”时,算法失败。列表末尾的[:]有什么特别之处?

如果有人可以提供帮助,我真的很感激。提前谢谢!

1 个答案:

答案 0 :(得分:2)

这是就地分配,不用新对象替换列表对象。 这样,输出就会放在原始列表中,并且可以由调用者读取。