zoukankan      html  css  js  c++  java
  • python 算法之查找算法实例

    一、查找算法

    需求:从指定列表中查到一个元素

    先定义一个列表,需要查到的元素是 105

    l = [1,3,4,6,10,33,36,45,49, 66, 77, 78, 79, 90, 96, 105, 312, 644, 647] 

    1、顺序查找(从头到尾查找,查到就停止,效率低)

    def fun1(l, num):
        n = 0
        for i in l:
            n += 1
            print ("count: ", n)
            if i == num:
                return l.index(i)
        return -1

    2、二分查找,也叫拆半查找(要求序列必须是顺序的,会将被查找元素先与序列最中间的元素比较,如果小于中间元素,则向左半部分查找,否则向右半部分查找,递归下去。效率高,平均性能好)

    def fun2(l, num):
        n = 0
        low = 0
        hight = len(l)-1
    
        while low <= hight:
            n += 1
            mid = (low+hight)//2
            print ("count: ", n)
            if num == l[mid]:
                return mid
            elif num < l[mid]:
                hight = mid - 1
            else:
                low = mid + 1
        return -1

    两者输出比较,顺序查找算法用了16次查到该元素,二分查找算法只用了4次,差距明显

    count:  1
    count:  2
    count:  3
    count:  4
    count:  5
    count:  6
    count: ...
    count:  15
    count:  16
    15
    count:  1
    count:  2
    count:  3
    count:  4
    15
  • 相关阅读:
    ATOM编辑器插件
    说说关于IE浏览器兼容性
    git命令
    Vue js 的生命周期详解
    Flexbox 布局教程
    到底vuex是什么?
    CSS3 动画 animation和@keyframes
    zabbix添加触发器Triggers
    zabbix邮件报警
    修改zabbix监控项刷新时间
  • 原文地址:https://www.cnblogs.com/sqtu/p/10573359.html
Copyright © 2011-2022 走看看