算法简介之二分法(需要写的出来)

一、简介

关于算法我们只需要稍微了解一下就可以了,对于算法,刚入行的小白基本上是接触不到相关工作的,除了顶尖高效的相关专业可以直接找到工作,通常情况下需要我们在进入一些大公司工作一段时间后,被调到算法部门,才是正常的工作流程。对于算法这个东西,小公司不会成立相关部门研究算法,只有大公司才会成立部门研究算法,因为算法产出低,但是算法从业者的工资又相对偏高。小公司中的算法部门大多数情况都是拿别人的算法来改改用用的。

二、什么是算法

算法的范围很大,只要是解决问题的思路都算算法。但是不是所有的算法都是高效的,也有很多不合格的算法,可这并不影响算法的流行。因为算法的应用范围确实很广,几乎涵盖了我们生活中的方方面面:推荐算法(抖音视频推送 淘宝商品推送)、成像算法(AI相关)

常见算法的原理以及伪代码:

二分法、冒泡、快拍、插入、堆排、桶排、数据结构(链表 约瑟夫问题 如何链表是否成环)

三、二分法

二分法算是算法中最简单的算法,有很大缺陷,但是面试的时候喜欢拿来考一考。

二分法有以下限制条件:

1、进行运算的数据值需要是有序的。

2、运算的时候如果需要取得的数据值是在两头的,反而会更加耗时

# 查找列表中某个数据值
# 方式1:for循环  次数较多
# 方式2:二分法 不断的对数据集做二分切割
correct = 754
# 假设我们要找到啊754这个值

# 获取中间的索引,这里通过整除来弄
def find(l1):
    # 如果列表中没有数据值就说明查找失败了
    if len(l1) == 0:
        return '没有找到'
    middle = len(l1) // 2
    if l1[middle] > correct:
        # 如果中间这个数的值大于要找的这个值就取列表左边的列表继续查找
        new_list = l1[:middle]
        print(new_list)
        return find(new_list)
    elif l1[middle] < correct:
        # 如果中间这个数的值小于要找的这个值就取列表右边的列表继续查找
        new_list = l1[middle:]
        print(new_list)
        return find(new_list)
    else:
        # 除了大于和小于两种情况就是找到了那个值
        return correct


print(find(l1))

原文地址:http://www.cnblogs.com/zhihuanzzh/p/16796863.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性