• 二分法与面向过程编程思想


    1、二分法(递归的应用场景)=》算法(算法:是高效解决问题的办法)
    前提:有一个按照从小到大顺序排列的数字列表
    需要从该数字列表中找到我们想要的那个一个数字
    如何做更高效???
    用到了二分法:取中间索引的值比较要找的值,如果寻找的值比中间索引的值大继续往右找继续用二分法,同理小就往左找,else就是找到了

    要做出不存在状况的判断,二分法一直会切到列表为空,为空还没找到代表值不存在
    2、面向过程编程思想:

    核心是"过程"二字,过程即流程,指的是做事的步骤:先什么、再什么、后干什么
    基于该思想编写程序就好比在设计一条流水线

    优点:复杂的问题流程化、进而简单化
    缺点:扩展性非常差(牵一发而动全身)

    面向过程的编程思想应用场景解析:
    1、不是所有的软件都需要频繁更迭:比如编写脚本
    2、即便是一个软件需要频繁更迭,也不并不代表这个软件所有的组成部分都需要一起更迭


    案例:
    # 算法:是高效解决问题的办法
    # 算法之二分法

    # 需求:有一个按照从小到大顺序排列的数字列表
    # 需要从该数字列表中找到我们想要的那个一个数字
    # 如何做更高效???

    #
    # nums=[-3,4,7,10,13,21,43,77,89]
    # find_num=10
    #
    # nums=[-3,4,13,10,-2,7,89]
    # nums.sort()
    # print(nums)

    # 方案一:整体遍历效率太低
    # for num in nums:
    # if num == find_num:
    # print('find it')
    # break

    # 方案二:二分法
    # def binary_search(find_num,列表):
    # mid_val=找列表中间的值
    # if find_num > mid_val:
    # # 接下来的查找应该是在列表的右半部分
    # 列表=列表切片右半部分
    # binary_search(find_num,列表)
    # elif find_num < mid_val:
    # # 接下来的查找应该是在列表的左半部分
    # 列表=列表切片左半部分
    # binary_search(find_num,列表)
    # else:
    # print('find it')

    # nums=[-3,4,7,10,13,21,43,77,89]
    # find_num=8
    # def binary_search(find_num,l):
    # print(l)
    # if len(l) == 0:
    # print('找的值不存在')
    # return
    # mid_index=len(l) // 2
    #
    # if find_num > l[mid_index]:
    # # 接下来的查找应该是在列表的右半部分
    # l=l[mid_index+1:]
    # binary_search(find_num,l)
    # elif find_num < l[mid_index]:
    # # 接下来的查找应该是在列表的左半部分
    # l=l[:mid_index]
    # binary_search(find_num,l)
    # else:
    # print('find it')
    #
    # binary_search(find_num,nums)
  • 相关阅读:
    SpringCloud Config 配置中心
    MySQL 8.0版本安装后,安装目录下找不到my.ini文件
    MySQL 跨库JOIN
    SpringCloud Ribbon 自定义负载均衡算法
    idea部署tomcat,日志打印显示乱码问题解决
    centos7配置回环网卡地址
    INV*物料接收子库存更新
    AP*供应商更新
    AR*Hz_Parties 客户表更新
    MyBatis-Plus自动生成代码
  • 原文地址:https://www.cnblogs.com/h1227/p/12574956.html
Copyright © 2020-2023  润新知