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 相关文章推荐
详解Django中的ifequal和ifnotequal标签使用
Jul 16 Python
Python缩进和冒号详解
Jun 01 Python
Golang与python线程详解及简单实例
Apr 27 Python
Python之re操作方法(详解)
Jun 14 Python
浅谈python中copy和deepcopy中的区别
Oct 23 Python
Python如何快速上手? 快速掌握一门新语言的方法
Nov 14 Python
python之pandas用法大全
Mar 13 Python
Python实现基于PIL和tesseract的验证码识别功能示例
Jul 11 Python
python网络编程:socketserver的基本使用方法实例分析
Apr 09 Python
Python datetime模块使用方法小结
Jun 18 Python
Django如何实现防止XSS攻击
Oct 13 Python
python保存图片的四个常用方法
Feb 28 Python
python使用XPath解析数据爬取起点小说网数据
Apr 22 #Python
python 实现德洛内三角剖分的操作
python 三边测量定位的实现代码
python如何读取.mtx文件
Apr 22 #Python
Python中tkinter的用户登录管理的实现
python爬虫之利用selenium模块自动登录CSDN
Python数据清洗工具之Numpy的基本操作
You might like
安装PHP可能遇到的问题“无法载入mysql扩展” 的解决方法
2007/04/16 PHP
php中并发读写文件冲突的解决方案
2013/10/25 PHP
通过curl模拟post和get方式提交的表单类
2014/04/23 PHP
php保存信息到当前Session的方法
2015/03/16 PHP
Laravel 5框架学习之Eloquent 关系
2015/04/09 PHP
Yii视图操作之自定义分页实现方法
2016/07/14 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
2016/11/15 PHP
php获取客户端IP及URL的方法示例
2017/02/03 PHP
详解PHP中的序列化、反序列化操作
2017/03/21 PHP
Yii框架学习笔记之session与cookie简单操作示例
2019/04/30 PHP
js 全兼容可高亮二级缓冲折叠菜单
2010/06/04 Javascript
JS判断页面加载状态以及添加遮罩和缓冲动画的代码
2012/10/11 Javascript
jQuery文本框(input textare)事件绑定方法教程
2013/04/24 Javascript
node.js入门教程迷你书、node.js入门web应用开发完全示例
2014/04/06 Javascript
jQuery html()方法使用不了无法显示内容的问题
2014/08/06 Javascript
JavaScript动态创建form表单并提交的实现方法
2015/12/10 Javascript
温习Javascript基础语法之词法结构
2016/05/31 Javascript
全面介绍javascript实用技巧及单竖杠
2016/07/18 Javascript
windows 下安装nodejs 环境变量设置
2017/02/02 NodeJs
javascript验证香港身份证的格式或真实性
2017/02/07 Javascript
JavaScript轻松创建级联函数的方法示例
2017/02/10 Javascript
for循环 + setTimeout 结合一些示例(前端面试题)
2017/08/30 Javascript
微信 jssdk 签名错误invalid signature的解决方法
2019/01/14 Javascript
vue实现的下拉框功能示例
2019/01/29 Javascript
vue elementUI 表单校验功能之数组多层嵌套
2019/06/04 Javascript
js数组相减简单示例【删除a数组所有与b数组相同元素】
2020/03/04 Javascript
vue+iview分页组件的封装
2020/11/17 Vue.js
Python多线程中阻塞(join)与锁(Lock)使用误区解析
2018/04/27 Python
浅谈Python2、Python3相对路径、绝对路径导入方法
2018/06/22 Python
python版DDOS攻击脚本
2019/06/12 Python
计算机通信工程专业毕业生推荐信
2013/12/24 职场文书
大学生党员个人对照检查材料范文
2014/09/25 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
CSS 文字装饰 text-decoration & text-emphasis 详解
2021/04/06 HTML / CSS
Java 实现限流器处理Rest接口请求详解流程
2021/11/02 Java/Android
使用 Koa + TS + ESLlint 搭建node服务器的过程详解
2022/05/30 NodeJs