标签:java else ddl append 快速 array lis quick 移除
通过二分法递归进行排序
a.选择一个基准值(中值)
b.声明两个列表,分别存储小于基准值和大于基准值的元素
c.递归上面步骤
d.直到长度为一,将两个列表和基准值拼接成
[list]
列表返回
# -*- 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