这是快速排序还是合并排序?

时间:2017-08-11 18:17:37

标签: python algorithm sorting quicksort mergesort

这是功能:

def sort(unsorted):
    less = []
    equal = []
    greater = []

    if len(unsorted) < 1:
        return unsorted

    pivot = unsorted[-1]

    for element in unsorted:
        if element < pivot:
            less.append(element)
        if element == pivot:
            equal.append(element)
        if element > pivot:
            greater.append(element)

    return sort(less)+equal+sort(greater)


unsorted = [7 ,2, 1, 8, 6, 3, 5, 4]
print sort(unsorted)

我很难将其定义为快速排序或合并排序。从概念上讲,我认为它符合Quick sort的定义:它使用一个pivot来将元素分成比pivot子集更小和更大的值,然后递归地对它们进行排序。但另一方面它非常让我想起Merge sort,因为它递归地将给定列表分解成更小的块并且它们将它们组合在一起(尽管绕着&#34; pivot&#34;)。

这是一种快速排序还是合并排序?

2 个答案:

答案 0 :(得分:2)

Quicksort分区,MergeSort合并。

显然有一个分区过程(一方是小键,另一方是大键),显然没有合并(两个排序的序列交织在一起)。

答案 1 :(得分:1)

合并排序总是将列表除以len(list)/ 2的索引。但是由于此代码根据list [-1]中的值来划分arr,这是快速排序