Python学习笔记19(算法)
1.二分查找
只能用二分查找查找有序列表
def bin_search(data,val): #data为被查找的列表,val是要查找的值low = 0high = len(data) - 1while low <= high:mid = (low+high)//2if data[mid] == val:return mid #找到了,返回val所在的索引elif data[mid] < val:low = mid + 1else:high = mid - 1return #未找到,返回None
二分查找
2.冒泡排序
def bubble_sort(data): #data传需要排序的列表for i in range(len(data)-1):FLAG = 0for j in range(len(data)-i-1):if data[j] > data[j+1]:data[j],data[j+1] = data[j+1],data[j]FLAG = 1if FLAG == 0:break
冒泡排序
3.选择排序
def select_sort(data):for i in range(len(data)-1):min = ifor j in range(i+1,len(data)):if data[j] < data[min]:min = jdata[i],data[min] = data[min],data[i]
选择排序
4.插入排序
def insert_sort(data):for i in range(1,len(data)):tmp = data[i]j = i - 1while j >= 0 and data[j] > tmp:data[j+1] = data[j]j = j - 1data[j + 1] = tmp
插入排序
5.快速排序
def quick_sort(data,left,right):if left < right:mid = partition(data,left,right)quick_sort(data,left,mid - 1)quick_sort(data,mid + 1,right)def partition(data,left,right):tmp = data[left]while left < right:while left < right and data[right] >= tmp:right -= 1data[left] = data[right]while left < right and data[left] <= tmp:left += 1data[right] = data[left]data[left] = tmpreturn left
快速排序
6.堆排序
def sift(data,low,high):i = lowj = 2 * i +1tmp = data[i]while j <= high:if j + 1 <= high and data[j] < data[j+1]:j += 1if data[j] > tmp:data[i] = data[j]i = jj = 2 * i + 1else:breakdata[i] = tmpdef heap_sort(data):n = len(data)for i in range(n // 2 - 1 ,-1 ,-1):sift(data,i,n-1)for i in range(n-1,-1,-1):data[0],data[i] = data[i],data[0]sift(data,0,i-1)
堆排序
7.归并排序
def merge(data,low,mid,high):i = lowj = mid+1tmp = []while i <= mid and j <= high:if data[i] < data[j]:tmp.append(data[i])i += 1else:tmp.append(data[j])j += 1while i <= mid:tmp.append(data[i])i += 1while j <= high:tmp.append(data[j])j += 1data[low:high+1] = tmpdef mergesort(data,low,high):if low < high:mid = (low+high)//2mergesort(data,low,mid)mergesort(data,mid+1,high)merge(data,low,mid,high)
归并排序
转载于:https://www.cnblogs.com/zy516563199/p/7453605.html
Python学习笔记19(算法)相关推荐
- Python学习笔记19:列表 III
Python学习笔记19:列表 III 其实这篇笔记标题应该是列表扩展,从列表开始,将涵盖Python中的序列容器. 关于列表的基础知识,可以看我的前两篇文章: Python学习笔记1:列表. Pyt ...
- OpenCV之Python学习笔记(1)(2): 图像的载入、显示和保存 图像元素的访问、通道分离与合并
OpenCV之Python学习笔记 一直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看到一本国外的新书< ...
- Python学习笔记第二十九天(N维数组(ndarray))
Python学习笔记第二十九天 N维数组(ndarray) 构建阵列 索引阵列 ndarray的内部内存布局 阵列属性 内存布局 数据类型 其他属性 阵列接口 ctypes外部功能接口 Array方法 ...
- OpenCV之Python学习笔记
RSS订阅 登陆 注册 原文链接地址:http://www.itozi.net/19477.html OpenCV之Python学习笔记 ITOZI 发布于 2015-08-06 分类:OpenSta ...
- PYTHON学习笔记之(一)2020.08
PYTHON学习笔记之(一)2020.08 Python基础 数据类型 常见的列表.字典,以及元组.集合. 1 列表 list 1.1 列表转换字符串 stu = ['王一', '李二', '张三'] ...
- Python 学习笔记——入门
文章目录 〇.Python 是什么 一.推荐的教程 二.这篇学习笔记适合什么人 三.环境 1. 操作系统 对于 Windows 对于 Ubuntu 对于其他操作系统 2. Python 对于 Wind ...
- [python教程入门学习]python学习笔记(CMD执行文件并传入参数)
本文章向大家介绍python学习笔记(CMD执行文件并传入参数),主要包括python学习笔记(CMD执行文件并传入参数)使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋 ...
- python学习笔记目录
人生苦短,我学python学习笔记目录: week1 python入门week2 python基础week3 python进阶week4 python模块week5 python高阶week6 数据结 ...
- python 学习笔记 12 -- 写一个脚本获取城市天气信息
近期在玩树莓派,前面写过一篇在树莓派上使用1602液晶显示屏,那么可以显示后最重要的就是显示什么的问题了. 最easy想到的就是显示时间啊,CPU利用率啊.IP地址之类的.那么我认为呢,假设可以显示当 ...
最新文章
- python爬虫可以干什么-python爬虫能够干什么
- PhpStrom 常用的插件
- (原创)7-1 银行业务队列简单模拟 (30 分)
- boost::hana::eval用法的测试程序
- Java多线程(3) Volatile的实现原理
- 判断listview是上滑还是下滑的方法
- php开发总结,PHP开发规范总结
- 手把手教程 Sublime Text 删除重复行
- 矩池云使用conda安装离线安装包
- 程序员面试金典——5.1二进制插入
- MybatisPlus自定义sql分页查询
- 操作系统实验报告清华大学LAB1
- vue代码怎么变成小程序_从项目中由浅入深的学习vue,微信小程序和快应用 (1)
- PCL教程-PCLVisualizer可视化类的使用
- 浪潮服务器【磁盘阵列】故障修复
- SAP 批量导出客户主数据
- 基于飞桨本地ocr安卓按键插件
- CleanMyMac XMac苹果电脑专属系统优化工具
- php导出excel无边框线,phpexcel设置边框不全或者只有竖线问题解决方法
- 深度学习巨头—杨立昆
热门文章
- Jsp2.0自定义标签(第二天)——自定义循环标签
- 强大的CSS3动画库animate.css
- HDU 1203 I NEED A OFFER!(01背包)
- 应用程序的主入口点应用程序的主入口点应用程序的主入口点
- 北航教授李波:说AI会有低潮就是胡扯,这是人类长期的追求
- POJ - 3257 Cow Roller Coaster (背包)
- 在Hadoop上运行基于RMM中文分词算法的MapReduce程序
- unity中脚本编辑器UnIDE
- UVa 10026 - Shoemaker's Problem
- opencv 在debian6.0下安装