Python 每日一题(二分法查找算法)

Python 每日一题:锻炼Python语法的运用,思维逻辑的锻炼,算法能力的培养。


题目:

   使用Python实现二分法查找逻辑,存着返回查找元素的索引值,不存在则返回-1。

   二分法查找:也称折半法,是一种在有序列表中查找出特定元素的搜索算法。

分析:

   二分法查找规则:

    (1)先从数组的中间元素位置开始搜索,如果该元素正好是目标元素,则查找结束,否则执行下一步。

   (2)如果目标元素大于/小于中间元素,则在数组大于/小于中间元素的那一半区域位置查找,然后重复步骤(1)的操作。

   (3)如果某一步数组为空,则表示找不到目标元素。

实现:

def search_insert_index(list_number, target):
    '''
        使用二分查找的算法
    :param list_number: list,需查找的有序列表
    :param target: num,查找的目标元素
    :return: int,存在则返回对应的元素的索引值,如果不存在则返回-1
    '''
    left = 0   # 左侧索引值位置
    right = len(list_number) - 1     # 右侧索引值位置
    while left <= right:
        mid = (left + right) // 2
        if list_number[mid] == target:
            return mid
        elif list_number[mid] < target:
            left = mid + 1
        else:
            right = mid - 1
    return -1

L = [1, 3, 5, 7, 9, 13]
print(search_insert_index(L, 9))
print(search_insert_index(L, 1))
print(search_insert_index(L, 6))

结果:

4
0
-1

【结语】以上整个程序的实现逻辑,还存在很多不全面的地方,欢迎各位大佬指点;如果觉得笔者不易,请给予点赞,给予我记录更多文章的动力!!

你可能感兴趣的:(Python,二分法,python,算法)