Python-初识算法-51
# 什么叫算法
# 计算的方法 : 人脑复杂 计算机简单 # 99 * 13 = 1287 = 13*100 - 13
# 查找 : 找数据
# 排序 :
# 最短路径 # 我们学习的算法 都是过去时
# 了解基础的算法 才能创造出更好的算法
# 不是所有的事情都能套用现成的方法解决的
# 有些时候会用到学过的算法知识来解决新的问题
# # 代码实现 二分查找算法 必须处理有序的列表 查找66 def find(l,aim):
mid_index = len(l) // 2
if l[mid_index] < aim:
new_l = l[mid_index+1 :]
find(new_l,aim)
elif l[mid_index] > aim:
new_l = l[:mid_index]
find(new_l, aim)
else:
print('找到了',mid_index,l[mid_index]) find(l,66) #虽然找到了 66 但是最后结果的索引为 0 显然不符合要求
l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
def find(l,aim,start = 0,end = None):
end = len(l) if end is None else end # end = len(l) 24
mid_index = (end - start)//2 + start #计算中间值 12 + 0 = 12
if l[mid_index] < aim: #l[12] < 44 #41 < 44
find(l,aim,start =mid_index+1,end=end) # find(l,44,start=13,end=24)
elif l[mid_index] > aim:
find(l, aim, start=start, end=mid_index-1)
else:
print('找到了',mid_index,aim)
#
ret= find(l,66) #函数还有很多问题 可以进一步优化 比如不存在的情况会报错
l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88] def find(l,aim,start = 0,end = None): # l,44,start=13,end=24
end = len(l) if end is None else end # end = 24
mid_index = (end - start)//2 + start #计算中间值 24-13/2 = 5 + 13 = 18
if l[mid_index] < aim: #l[18] < 44 #67 < 44
find(l,aim,start =mid_index+1,end=end)
elif l[mid_index] > aim: # 67 > 44
find(l, aim, start=start, end=mid_index-1) # find(l,44,start=13,end=17)
else:
print('找到了',mid_index,aim)
ret= find(l,66)
l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88] def find(l,aim,start = 0,end = None): # l,44,start=13,end=17
end = len(l) if end is None else end # end = 17
mid_index = (end - start)//2 + start #计算中间值 17-13/2 = 2 + 13 = 15
if l[mid_index] < aim: #l[15] < 44 #55 < 44
find(l,aim,start =mid_index+1,end=end)
elif l[mid_index] > aim: # 55 > 44
find(l, aim, start=start, end=mid_index-1) # find(l,44,start=13,end=14)
else:
print('找到了',mid_index,aim)
ret= find(l,66)
l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88] def find(l,aim,start = 0,end = None): # l,44,start=13,end=14
end = len(l) if end is None else end # end = 14
mid_index = (end - start)//2 + start #计算中间值 14-13/2 = 0+ 13 = 13
if l[mid_index] < aim: #l[13] < 44 #42 < 44
find(l,aim,start =mid_index+1,end=end) # find(l,44,start=14,end=14)
elif l[mid_index] > aim: # 42 > 44
find(l, aim, start=start, end=mid_index-1)
else:
print('找到了',mid_index,aim) ret= find(l,66)
l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88] def find(l,aim,start = 0,end = None):
end = len(l) if end is None else end
mid_index = (end - start)//2 + start
if start <= end:
if l[mid_index] < aim:
return find(l,aim,start =mid_index+1,end=end)
elif l[mid_index] > aim:
return find(l, aim, start=start, end=mid_index-1)
else:
return mid_index
else:
return '找不到这个值' ret= find(l,44)
print(ret)
# 参数 end
# 返回值
# 找不到的话怎么办 # l.index() # 67 发生两次调用
# 66 发生好几次
# 44 找不到 # age,二分查找,三级菜单的代码看一遍
# 斐波那契 # 问第n个斐波那契数是多少
# 阶乘
#3! 3*2*1
# 附加题 :考试附加题
# 递归实现
Python-初识算法-51的更多相关文章
- python初识(二)
目录: 进制 基本数据类型 整形 布尔值 字符串 列表 元祖 字典 集合 range & enumerate 一.进制 二进制转换十进制计算: 十进制:==47 一个字节公式:==128 64 ...
- 小学生绞尽脑汁也学不会的python(初识面对对象)
小学生绞尽脑汁也学不会的python(初识面对对象) 一. 面向对象思想 1. 面向过程. 重点在"过程". 按照实物的发展流程. 先干嘛,后干嘛, 最后干嘛.... 优点: 简单 ...
- Python基础算法综合:加减乘除四则运算方法
#!usr/bin/env python# -*- coding:utf-8 -*-#python的算法加减乘除用符号:+,-,*,/来表示#以下全是python2.x写法,3.x以上请在python ...
- xsank的快餐 » Python simhash算法解决字符串相似问题
xsank的快餐 » Python simhash算法解决字符串相似问题 Python simhash算法解决字符串相似问题
- python聚类算法实战详细笔记 (python3.6+(win10、Linux))
python聚类算法实战详细笔记 (python3.6+(win10.Linux)) 一.基本概念: 1.计算TF-DIF TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库 ...
- python排序算法实现(冒泡、选择、插入)
python排序算法实现(冒泡.选择.插入) python 从小到大排序 1.冒泡排序: O(n2) s=[3,4,2,5,1,9] #count = 0 for i in range(len(s)) ...
- Python C3 算法 手动计算顺序
Python C3 算法 手动计算顺序 手动计算类继承C3算法原则: 以所求类的直接子类的数目分成相应部分 按照从左往右的顺序依次写出继承关系 继承关系第一个第一位,在所有后面关系都是第一个出现的 ...
- python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)
1. 场景描述 一直做java,因项目原因,需要封装一些经典的算法到平台上去,就一边学习python,一边网上寻找经典算法代码,今天介绍下经典的K-means聚类算法,算法原理就不介绍了,只从代码层面 ...
- python相关性算法解决方案(rest/数据库/json/下载)
1. 场景描述 一直做java,因项目原因,需要封装一些经典的算法到平台上去,就一边学习python,一边网上寻找经典算法代码,今天介绍下经典的相关性算法,算法原理就不介绍了,只从代码层面进行介绍,包 ...
- 关联规则 -- apriori 和 FPgrowth 的基本概念及基于python的算法实现
apriori 使用Apriori算法进行关联分析 貌似网上给的代码是这个大牛写的 关联规则挖掘及Apriori实现购物推荐 老师 Apriori 的python算法实现 python实现关联规则 ...
随机推荐
- MyBatis笔记----报错:Exception in thread "main" org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)解决方法
报错 Exception in thread "main" org.apache.ibatis.binding.BindingException: Invalid bound st ...
- Java读取.properties配置文件
一.介绍 Properties文件在Java中主要为配置文件,文件类型为:.properties,格式为文本文件,内容格式为"键=值" 二.读取 这里我采用的是getResourc ...
- python 函数参数为*和**的作用与区别
def function(*args):print(args) 中*的作用:表示此时参数为一个元祖. def function(**args):print(args)中**的作用:表示此时参数为一个字 ...
- NPOI导入导出Excel工具类
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Ref ...
- c/c++ lambda 表达式 介绍
lambda 表达式 介绍 问题:假设有个需求是,在vector<string>找出所有长度大于等于4的元素.标准库find_if函数的第三参数是函数指针,但是这个函数指针指向的函数只能接 ...
- FastCGI Error Number: 5 (0x80070005).
在访问网站的时候,出现了以上这个错误: 在网上搜了很多方法,归纳起来就如下几种: 1, 网站安全狗]的安全策略问题 解决方案: 主动防御/禁止IIS执行程序 添加"php\php-cgi.e ...
- virtualbox+ievms:还你一个原装IE8
在web开发中,不可避免的一件事是浏览器兼容性问题,你永远无法想象项目正式上线后,坐在电脑前操作这套系统的人用的是什么版本的浏览器,IE(7,8,...),360,Chrome,火狐等,后面几个还好说 ...
- flex布局大讲解
http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html?utm_source=tuicool
- .Net下的全局异常捕获问题
全局异常捕获主要目标并不是为了将异常处理掉防止程序崩溃.因为当错误被你的全局异常捕获器抓到的时候,已经证实了你程序中存在BUG. 一般而言,我们的全局异常捕获主要作用就是接收到异常之后进行异常的反馈. ...
- (5)Python字典