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 匹配任意字符(包括换行符)的正则表达式写法
Oct 29 Python
python监控网卡流量并使用graphite绘图的示例
Apr 27 Python
python海龟绘图实例教程
Jul 24 Python
tensorflow训练中出现nan问题的解决
Feb 10 Python
Python简单实现两个任意字符串乘积的方法示例
Apr 12 Python
django 在原有表格添加或删除字段的实例
May 27 Python
Python OpenCV去除字母后面的杂线操作
Jul 05 Python
Python爬虫抓取论坛关键字过程解析
Oct 19 Python
python xlsxwriter模块的使用
Dec 24 Python
基于tensorflow __init__、build 和call的使用小结
Feb 26 Python
一篇文章带你搞懂Python类的相关知识
May 20 Python
使用Python拟合函数曲线
Apr 14 Python
python使用XPath解析数据爬取起点小说网数据
Apr 22 #Python
python 实现德洛内三角剖分的操作
python 三边测量定位的实现代码
python如何读取.mtx文件
Apr 22 #Python
Python中tkinter的用户登录管理的实现
python爬虫之利用selenium模块自动登录CSDN
Python数据清洗工具之Numpy的基本操作
You might like
smarty 缓存控制前的页面静态化原理
2013/03/15 PHP
ThinkPHP CURD方法之where方法详解
2014/06/18 PHP
Yii获取当前url和域名的方法
2015/06/08 PHP
Symfony核心类概述
2016/03/17 PHP
PHP实现的获取文件mimes类型工具类示例
2018/04/08 PHP
javascript 面向对象编程基础:继承
2009/08/21 Javascript
来自国外的14个图片放大编辑的jQuery插件整理
2010/10/20 Javascript
Jquery跨域获得Json时invalid label错误的解决办法
2011/01/11 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
jquery实现滑动图片自己测试的例子
2013/11/05 Javascript
javascript中为某个元素指定事件的三种方式
2014/08/07 Javascript
jQuery中prop()方法用法实例
2015/01/05 Javascript
javascript同步服务器时间和同步倒计时小技巧
2015/09/24 Javascript
Vue响应式添加、修改数组和对象的值
2017/03/20 Javascript
80%应聘者都不及格的JS面试题
2017/03/21 Javascript
详解node服务器中打开html文件的两种方法
2017/09/18 Javascript
Vue 项目中遇到的跨域问题及解决方法(后台php)
2018/03/28 Javascript
关于vue-router的那些事儿
2018/05/23 Javascript
分享5个好用的javascript文件上传插件
2018/09/16 Javascript
中级前端工程师必须要掌握的27个JavaScript 技巧(干货总结)
2019/09/23 Javascript
基于vue中的scoped坑点解说
2020/09/04 Javascript
基于vue hash模式微信分享#号的解决
2020/09/07 Javascript
Python 开发Activex组件方法
2009/11/08 Python
Python实现的维尼吉亚密码算法示例
2018/04/12 Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
2018/09/04 Python
python调用支付宝支付接口流程
2019/08/15 Python
python实现大量图片重命名
2020/03/23 Python
PyCharm汉化安装及永久激活详细教程(靠谱)
2020/01/16 Python
关于Theano和Tensorflow多GPU使用问题
2020/06/19 Python
简单的Python人脸识别系统
2020/07/14 Python
澳大利亚优惠网站:Deals.com.au
2019/07/02 全球购物
企业环保标语
2014/06/10 职场文书
小学教师读书活动总结
2014/07/08 职场文书
欢送会主持词
2015/07/01 职场文书
Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码)
2022/01/18 Java/Android
搭建Yolov5服务器
2022/04/30 Servers