快速排序

Posted langkyesir

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速排序相关的知识,希望对你有一定的参考价值。

一、通过javascript实现

1.1思路

1.2实现

二、通过Java实现

2.1思路

2.2实现

三、通过Python实现

3.1思路

通过二分法递归进行排序

a.选择一个基准值(中值)

b.声明两个列表,分别存储小于基准值和大于基准值的元素

c.递归上面步骤

d.直到长度为一,将两个列表和基准值拼接成[list]列表返回

3.2实现

# -*- encode: utf-8 -*-

import numpy as np


def quick_sort(_array):
    """
    快速排序, 通过二分法实现
    :param _array: 可转换为列表的数据类型
    :return: 已排序的列表
    """
    _array = list(_array)  # 类型转换
    if len(_array) >= 2:  # 列表判断长度是否>=2,是则进行排序操作;否则返回列表
        middle = _array[len(_array) // 2]  # 设置基准值
        left, right = list(), list()  # 定义基准值左右两边的[list]列表
        _array.remove(middle)  # 将基准值从源列表中移除
        for item in _array:  # 遍历每一项元素, 将其添加到对应的列表中
            if item >= middle:
                right.append(item)
            else:
                left.append(item)
        # 递归结果
        return quick_sort(left) + [middle] + quick_sort(right)
    else:
        return _array


if __name__ == ‘__main__‘:
    array = np.random.randint(0, 100, 10)  # [17 20 21 45 64 33 13 32 81 36]
    sort = quick_sort(array)  # [13, 17, 20, 21, 32, 33, 36, 45, 64, 81]

以上是关于快速排序的主要内容,如果未能解决你的问题,请参考以下文章

算法排序之堆排序

前端开发工具vscode如何快速生成代码片段

前端开发工具vscode如何快速生成代码片段

如何使用sublime代码片段快速输入PHP头部版本声明

代码片段如何使用CSS来快速定义多彩光标

vs2003:快速片段工具