Binary sort, quick sort

Sequence

Quick Sort

# 分治,递归,合并

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

 

Sort half

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)

 

Guess you like

Origin www.cnblogs.com/ywheunji/p/12376847.html