码迷,mamicode.com
首页 > 编程语言 > 详细

快速排序

时间:2020-07-12 10:35:40      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:java   else   ddl   append   快速   array   lis   quick   移除   

一、通过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]

快速排序

标签:java   else   ddl   append   快速   array   lis   quick   移除   

原文地址:https://www.cnblogs.com/langkyeSir/p/13287142.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!