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)