美文网首页
算法007_二分查找与线性查找的比较

算法007_二分查找与线性查找的比较

作者: 为宇绸缪 | 来源:发表于2024-01-06 21:12 被阅读0次

时间复杂度
线性查找的时间复杂度是 O(n),二分查找因为有折半的过程,时间复杂度为 O(logn)

时间的比较
使用装饰器来计算算法运行的时间

import time


def cal_time(func):
    def wrapper(*args, **kwargs):
        start_time = time.time()
        result = func(*args, **kwargs)
        end_time = time.time()
        print(f"函数 {func.__name__} 运行的时间是 {end_time - start_time} 秒")
        return result
    return wrapper

完整代码

import time


def cal_time(func):
    def wrapper(*args, **kwargs):
        start_time = time.time()
        result = func(*args, **kwargs)
        end_time = time.time()
        print(f"函数 {func.__name__} 运行的时间是 {end_time - start_time} 秒")
        return result
    return wrapper


@cal_time
def linear_search(target_list, target_value):
    for index, val in enumerate(target_list):
        if val == target_value:
            return index
    else:
        return None


@cal_time
def binary_search(target_list, target_value):
    left = 0
    right = len(target_list) - 1
    while left <= right:  
        mid = (left + right) // 2  
        if target_list[mid] == target_value:
            return mid
        elif target_list[mid] > target_value:
            right = mid - 1
        else:
            left = mid + 1
    else:
        return None


test_list = list(range(100000000))
linear_search(test_list, 1234567)
binary_search(test_list, 1234567)

运行结果

函数 linear_search 运行的时间是 0.08768105506896973 秒
函数 binary_search 运行的时间是 5.888938903808594e-05 秒

0.08 / ( 5.88 * 10^-5)= 1360,二分查找的效率约是线性查找的一千倍

注意
Python 的内置函数 Index() 使用的是线性查找,因为二分查找要求列表必须是有序的
如果是有序列表,可以使用线性查找。如果是无序的,就使用线性查找
如果要查找的次数非常多,可以先排序,再使用二分查找

相关文章

  • 二分查找算法

    一、二分查找算法 二分查找算法又称为折半查找算法,它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序...

  • 二分查找算法

    二分查找也称折半查找,是一种比较高效的查找算法,二分查找要求线性表必须是顺序存储结构,而且表中元素要按关键字有序排...

  • 数据结构与算法系列 (5) 查找算法

    1.概述 2.常见的查找算法 2.1 顺序(线性)查找 2.1.2 代码示例 2.2 二分查找/折半查找 2.2....

  • Chapter 2 Foundation of Algorith

    Chapter 2 插入排序 线性查找 选择算法 归并排序算法 二分查找算法 冒泡排序 插入排序 循环不...

  • 11_线性查找和二分查找

    线性查找 二分查找

  • 排序算法

    算法与数据结构基础 查找算法: 二分查找法: 简介:二分查找法又被称为折半查找法,用于预排序的查找问题 过程: 如...

  • python二分查找算法

    文章概述 二分查找法介绍 简单查找与二分查找对比 二分查找  二分查找算法主要思想:在有序列表中查找指定元素,先从...

  • 常考的数据结构与算法之算法

    本文记录一下我学习数据结构与算法中算法的知识点,使用的语言是C/C++语言 查找 二分查找又叫折半查找,要求线性表...

  • 数据结构和算法--二分查找

    二分查找 二分查找的思想 二分查找(Binary Search)算法,也叫折半查找算法。 二分查找针对的是一个有序...

  • 查找

    查找 framework 1 顺序 查找 适用: 线性表 思路: 逐个比较 2 二分查找 适用: 有序 顺序表...

网友评论

      本文标题:算法007_二分查找与线性查找的比较

      本文链接:https://www.haomeiwen.com/subject/mvnwndtx.html