Python常用算法

1. 常见算法

1. 二分查找

# 普通方法
def binary(alist, data):
    first, last = 0, len(alist)- 1
    while first <= last:
        middle_index = (first + last) // 2
        if alist[middle_index] > data:
            last = middle_index - 1
        elif alist[middle_index] < data:
            first = middle_index + 1
        else:
            return True
    return False

li = [2, 4, 5, 6, 7, 9, 14, 15]
binary(li, 9)

# 递归查找
def binary(alist, data):
    n = len(alist)
    if n < 1:
        return False
    mid = n // 2
    if alist[mid] > data:
        return binary(alist[0: mid], data)
    elif alist[mid] < data:
        return binary(alist[mid+1: ], data)
    else:
        return True

2. 冒泡排序

def bubbleSort(alist):
    for passnum in range(len(alist) - 1, 0, -1):  # range(11, 0, -1)
        for i in range(passnum):  # range(11)
            if alist[i] > alist[i + 1]:
                alist[i], alist[i + 1] = alist[i + 1], alist[i]
    return alist

3. 快速排序

def quick_sort(l1):
    # l1 = the_list
  	n = len(l1)
    if n < 2:
        return l1
    # 选取基准值
    mid = l1[n // 2]
    # print(mid)
    left, right = [], []
    # 移除基准值
    l1.remove(mid)

    for item in l1:
        if item >= mid:
            right.append(item)
        else:
            left.append(item)
    return quick_sort(left) + [mid] + quick_sort(right)

lis = [2, 1, 67, 34, 23, 56, 78, 43, 14, 8, 5]
print(quick_sort(lis))

4. 插入排序

posted @ 2022-04-11 18:16  Z-J-H  阅读(73)  评论(0)    收藏  举报