vlambda博客
学习文章列表

Day 18:二分查找算法


Day 18:二分查找算法

Day 17 作业题总结

写出几种常见复杂度对应的算法,星友们给出的答案都很准确,在这里参考星友聂磊的答案:

时间复杂度:

常见操作:哈希查找数组取值常数加减乘除

: 二分查找

计算数组中所有元素和,最大,最小

归并排序,堆排序,希尔排序,快速排序

:冒泡,选择排序

:三元方程暴力求解

:求解所有子集

:全排列问题。比如:给定字母串,每个字母必须使用,且一次组合中只能使用一次,求所有组合方式;另外还要经典的旅行商 TSP 问题

下面这幅图太直观了:

其中,复杂度为: 是难解的问题, , 都是可以接受的解, , 的解是梦寐以求的。

Day 18 :二分查找

二分查找算法,binary search algorithm,也称「折半搜索算法」、「对数搜索算法」

它的使用前提:是一种在「有序数组」中查找某一特定元素的搜索算法。

请补全下面二分查找算法:

# 返回hkey在数组中的索引位置
def binary_search(arr, left, right, hkey):
    """
    arr:有序数组
    left:查找区间左侧
    right:查找区间右侧
    hkey:带查找的关键码
    备注:left, right 都包括在内,找不到返回 -1
  
    """

    #
    #
    #


长按二维码关注