python入门之算法学习


Posted in Python onApril 22, 2021

前言

参考学习书籍:《算法图解》[美]Aditya Bhargava,袁国忠(译)北京人民邮电出版社,2017

二分查找 binary_search

实现二分查找的python代码如下:

def binary_search(list, item):
    low = 0 #最低位索引位置为0
    high = len(list)- 1 #最高位索引位置为总长度-1
    while low <= high: 
        mid = (low + high)//2 #检查中间的元素,书上是一条斜杠,我试过加两条斜杠才行
        guess = list[mid]#python自动圆整
        if guess == item:  #找到了元素
            return mid
        if guess > item:  #猜的数字大了,就修改high
            high = mid - 1
        else:            #猜的数字小了,就修改low
            low = mid + 1
    return None   #没有指定的元素

测试代码:

>>> if __name__ == "__main__":#我试过加上好用
	 my_list=[1,3,5,7,9]
	 print (binary_search(my_list,3))#把binary_search也加上括号

	 
1#表示3的索引位置为1
>>> if __name__ == "__main__":
	 my_list=[1,3,5,7,9]
	 print (binary_search(my_list,0))

	 
None#表示0不在列表中

选择排序 selectionSort()

实现选择排序的python代码如下:

def findSmallest(arr):
    smallest = arr[0] 
    smallest_index =0
    for i in range(1,len(arr)):
        if arr[i] < smallest:
            smallest = arr[i]
            smallest_index= i
    return smallest_index

def selectionSort(arr):
    newArr = []
    for i in range(len(arr)):
        smallest = findSmallest(arr)
        newArr.append(arr.pop(smallest))  
    return newArr

测试代码:

#样式1,把selcetionSort()作为新的值给arr,打印arr
>>> number=[5,3,6,2,10]
>>> arr=selectionSort(number)
>>> arr
[2, 3, 5, 6, 10]
#样式2,加上if __name__ == '__main__':(我也不知道啥作用)
>>> if __name__ == '__main__':
	number=[5,3,6,2,10]
	print(selectionSort(number))

	
[2, 3, 5, 6, 10]
#样式3,直接输出,最简洁
>>> number=[5,3,6,2,10]
>>> print(selectionSort(number))
[2, 3, 5, 6, 10]

到此这篇关于python入门之算法学习的文章就介绍到这了,更多相关python算法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python设计模式之代理模式实例
Apr 26 Python
Python输出9*9乘法表的方法
May 25 Python
Python实现文件按照日期命名的方法
Jul 09 Python
分享一下Python 开发者节省时间的10个方法
Oct 02 Python
Python基于Socket实现的简单聊天程序示例
Aug 05 Python
python中实现数组和列表读取一列的方法
Apr 03 Python
使用Eclipse如何开发python脚本
Apr 11 Python
Python sklearn KFold 生成交叉验证数据集的方法
Dec 11 Python
numpy.ndarray 实现对特定行或列取值
Dec 05 Python
浅析Django中关于session的使用
Dec 30 Python
python上传时包含boundary时的解决方法
Apr 08 Python
2020版Python学习路线图(附学习资料)
Sep 15 Python
python使用XPath解析数据爬取起点小说网数据
Apr 22 #Python
python 实现德洛内三角剖分的操作
python 三边测量定位的实现代码
python如何读取.mtx文件
Apr 22 #Python
Python中tkinter的用户登录管理的实现
python爬虫之利用selenium模块自动登录CSDN
Python数据清洗工具之Numpy的基本操作
You might like
一拳超人中怪人协会钦定! S级别最强四人!
2020/03/02 日漫
php strtotime 函数UNIX时间戳
2009/01/14 PHP
使用PHP 5.0创建图形的巧妙方法
2010/10/12 PHP
深入解析PHP 5.3.x 的strtotime() 时区设定 警告信息修复
2013/08/05 PHP
在Firefox下js select标签点击无法弹出
2014/03/06 Javascript
JavaScript中按位“异或”运算符使用介绍
2014/03/14 Javascript
jquery bind(click)传参让列表中每行绑定一个事件
2014/08/06 Javascript
5种处理js跨域问题方法汇总
2014/12/04 Javascript
jQuery+PHP打造滑动开关效果
2014/12/16 Javascript
深入探究使JavaScript动画流畅的一些方法
2015/06/30 Javascript
jQuery仿淘宝网产品品牌隐藏与显示效果
2015/09/01 Javascript
Javascript类型转换的规则实例解析
2016/02/23 Javascript
微信小程序加载更多 点击查看更多
2016/11/29 Javascript
基于VUE移动音乐WEBAPP跨域请求失败的解决方法
2018/01/16 Javascript
解决angularjs中同步执行http请求的方法
2018/08/13 Javascript
JS函数内部属性之arguments和this实例解析
2018/10/07 Javascript
详解微信小程序中组件通讯
2018/10/30 Javascript
JQuery事件冒泡和默认行为代码实例
2020/05/13 jQuery
Python标准库与第三方库详解
2014/07/22 Python
Python利用multiprocessing实现最简单的分布式作业调度系统实例
2017/11/14 Python
15行Python代码带你轻松理解令牌桶算法
2018/03/21 Python
django+mysql的使用示例
2018/11/23 Python
详解python路径拼接os.path.join()函数的用法
2019/10/09 Python
python创建学生管理系统
2019/11/22 Python
使用pandas 将DataFrame转化成dict
2019/12/10 Python
Python netmiko模块的使用
2020/02/14 Python
python+selenium+chromedriver实现爬虫示例代码
2020/04/10 Python
python可迭代对象去重实例
2020/05/15 Python
如何基于Django实现上下文章跳转
2020/09/16 Python
StubHub意大利:购买和出售全球演唱会和体育赛事门票
2017/11/21 全球购物
Notino希腊:购买香水和美容产品
2019/07/25 全球购物
水利学院求职自荐书
2014/02/01 职场文书
公司法人授权委托书范本
2014/09/12 职场文书
埃及王子观后感
2015/06/16 职场文书
MySQL令人咋舌的隐式转换
2021/04/05 MySQL
python中的3种定义类方法
2021/11/27 Python