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

标签 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)

我很难将其定义为快速排序或归并排序。从概念上讲,我认为它符合快速排序的定义:它使用一个枢轴将元素分成比枢轴更小和更大的子集,然后递归地对它们进行排序。但另一方面,它让我想起了合并排序,因为它递归地将给定列表分解为更小的 block ,然后将它们重新组合在一起(尽管围绕“枢轴”)。

那么这是快速排序还是归并排序?

最佳答案

Quicksort 分区,MergeSort 合并。

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

关于python - 这是快速排序还是合并排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45641530/

相关文章:

python - Pandas - 从数据框创建差异矩阵

Android:从 Kivy 后台服务播放声音

jquery - 如何使用 jquery 按日期范围对 json 进行排序?

python - 信号处理程序退出,但程序继续运行?

python - 每个连接都有单独的线程?

c# - 图像扭曲和收缩效果,图像失真算法

algorithm - 蒙特卡洛树搜索或其他随机纸牌游戏算法?

php - 堆叠算法 - 在尽可能小的区域堆叠 3d 对象

java - 对列表中的不同类型字符串进行排序

python - 如何在 Python 中对号码列表进行排序?