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 29 Python
用Python下载一个网页保存为本地的HTML文件实例
May 21 Python
从django的中间件直接返回请求的方法
May 30 Python
Linux下python3.7.0安装教程
Jul 30 Python
浅析python中的迭代与迭代对象
Oct 08 Python
Django Channels 实现点对点实时聊天和消息推送功能
Jul 17 Python
浅谈Python访问MySQL的正确姿势
Jan 07 Python
使用python的turtle函数绘制一个滑稽表情
Feb 28 Python
Python requests模块session代码实例
Apr 14 Python
520使用Python实现“我爱你”表白
May 20 Python
Python读取Excel数据并生成图表过程解析
Jun 18 Python
python如何调用百度识图api
Sep 29 Python
python使用XPath解析数据爬取起点小说网数据
Apr 22 #Python
python 实现德洛内三角剖分的操作
python 三边测量定位的实现代码
python如何读取.mtx文件
Apr 22 #Python
Python中tkinter的用户登录管理的实现
python爬虫之利用selenium模块自动登录CSDN
Python数据清洗工具之Numpy的基本操作
You might like
PHP无限分类(树形类)
2013/09/28 PHP
php结合ACCESS的跨库查询功能
2015/06/12 PHP
php加密解密字符串示例
2016/10/13 PHP
php preg_match的匹配不同国家语言实例
2016/12/29 PHP
用JS操作FRAME中的IFRAME及其内容的实现代码
2008/07/26 Javascript
Span元素的width属性无效果原因及解决方案
2010/01/15 Javascript
体验js中splice()的强大(插入、删除或替换数组的元素)
2013/01/16 Javascript
jQuery布局插件UI Layout简介及使用方法
2013/04/03 Javascript
javascript判断是手机还是电脑访问网页的简单实例分享
2014/06/03 Javascript
json中换行符的处理方法示例介绍
2014/06/10 Javascript
node.js中使用q.js实现api的promise化
2014/09/17 Javascript
用JavaScript来美化HTML的select标签的下拉列表效果
2015/11/17 Javascript
深入php面向对象、模式与实践
2016/02/16 Javascript
jQuery轻松实现表格的隔行变色和点击行变色的实例代码
2016/05/09 Javascript
vue.js 表格分页ajax 异步加载数据
2016/10/18 Javascript
Javascript 判断两个IP是否在同一网段实例代码
2016/11/28 Javascript
浅析javascript中的Event事件
2016/12/09 Javascript
JS实现浏览器打印、打印预览示例
2017/02/28 Javascript
VueJs单页应用实现微信网页授权及微信分享功能示例
2017/07/26 Javascript
vscode中eslint插件的配置(prettier配置无效)
2019/09/10 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
2019/11/04 Javascript
Python struct.unpack
2008/09/06 Python
python中mechanize库的简单使用示例
2014/01/10 Python
centos系统升级python 2.7.3
2014/07/03 Python
Python 3.x 新特性及10大变化
2015/06/12 Python
浅析NumPy 切片和索引
2020/09/02 Python
python中re模块知识点总结
2021/01/17 Python
css3实现文字首尾衔接跑马灯的示例代码
2020/10/16 HTML / CSS
松本清官方海外旗舰店:日本最大的药妆连锁店
2017/11/21 全球购物
护士自荐信怎么写
2013/10/18 职场文书
材料物理专业个人求职信
2013/12/15 职场文书
校优秀毕业生主要事迹
2014/05/26 职场文书
节约用电标语
2014/06/17 职场文书
会议营销主持词
2015/07/03 职场文书
2016春季小学开学寄语
2015/12/03 职场文书
java.util.NoSuchElementException原因及两种解决方法
2022/06/28 Java/Android