首页 > 编程语言 > 详细

二分排序,快速排序

时间:2020-02-28 15:11:33      阅读:157      评论:0      收藏:0      [点我收藏+]

排序

快速排序

# 分治,递归,合并

def quicksort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[len(arr)//2]
    left = [x for x in arr if x < pivot]
    right = [x for x in arr if x > pivot]
    return quicksort(left) + [pivot] + quicksort(right)

lists=[30,24,5,58,18,36,12,42,39]

print(quicksort(lists))

 

二分排序

def func(l, k, left, right):   #l 有序数组,k 目标值
    # 递归退出条件
    if left > right:
        return -1
    middle = (left + right) // 2
    if l[middle] == k:
        return middle
    elif l[middle] > k:
        right = middle - 1
        return func(l, k, left, right)
    else:
        left = middle + 1
        return func(l, k, left, right)

 

二分排序,快速排序

原文:https://www.cnblogs.com/ywheunji/p/12376847.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!