浅谈python常用程序算法


Posted in Python onMarch 22, 2019

一。冒泡排序:

1.冒泡排序是将无序的数字排列成从小到大的有序组合:

过程:对相邻的两个元素进行比较,对不符合要求的数据进行交换,最后达到数据有序的过程。

规律:

1.冒泡排序的趟数时固定的:n-1

2.冒泡排序比较的次数时固定的:n*(n-1)/2

3.冒泡排序交换的次数时不固定的:但是最大值为:n*(n-1)/2

注意:n = 数据个数,排序过程中需要临时变量存储要交换的数据

eg:

l=[688, 888, 711,999,1,4,6]
for i in range(len(l)-1):
  for j in range(len(l)-1):
    if l[j]>l[j+1]:
      tmp=l[j]
      l[j]=l[j+1]
      l[j+1]=tmp
print(l)

二。选择排序:

list=[10,3,5,2,9]

过程,循环当前列表,将当前循环到的值与余下的每个数字相比较,如果比当前值小,就与当前值交换位置。

eg:

l=[688, 888, 711,999,1,4,6]
for i in range(len(l)-1):
  for j in range(i+1,len(l)):
    if l[j]<l[i]:
      tmp=l[i]
      l[i]=l[j]
      l[j]=tmp
print(l)

优化:每次找到最小值后不立即替换,而是等待本次循环结束再替换,减少了操作的次数,效率提高了

l=[688, 888, 711,999,1,4,6]
for i in range(len(l)-1):
  Min=i
  for j in range(i+1,len(l)):
    if l[Min] > l[j]:
      Min=j
  tmp=l[Min]
  l[Min]=l[i]
  l[i]=tmp
print(l)

三。插入排序:

插入排序(Insertion Sort)的基本思想是:将列表分为2部分,左边为排序好的部分,右边为未排序的部分,循环整个列表,每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。

eg:

array=[9,8,7,6,5,4,3,2,1]

for i in range(1,len(array)):
  current_val=array[i]
  current_position=i
  while current_position >0 and array[current_position-1] > current_val:
    array[current_position]=array[current_position-1]
    current_position-=1
  array[current_position]=current_val
print(array)

以上所述是小编给大家介绍的python常用程序算法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python比较两个图片相似度的方法
Mar 13 Python
Tensorflow使用tfrecord输入数据格式
Jun 19 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
Mar 11 Python
将pip源更换到国内镜像的详细步骤
Apr 07 Python
python TF-IDF算法实现文本关键词提取
May 29 Python
PyQT5 QTableView显示绑定数据的实例详解
Jun 25 Python
Python3enumrate和range对比及示例详解
Jul 13 Python
如何通过python实现人脸识别验证
Jan 17 Python
使用Python对Dicom文件进行读取与写入的实现
Apr 20 Python
Lombok插件安装(IDEA)及配置jar包使用详解
Nov 04 Python
python从ftp获取文件并下载到本地
Dec 05 Python
Python可视化神器pyecharts绘制地理图表
Jul 07 Python
python实现移位加密和解密
Mar 22 #Python
python实现可逆简单的加密算法
Mar 22 #Python
python实现字符串加密 生成唯一固定长度字符串
Mar 22 #Python
详解Python循环作用域与闭包
Mar 21 #Python
浅谈python之高阶函数和匿名函数
Mar 21 #Python
浅谈Python反射 &amp; 单例模式
Mar 21 #Python
详解Python中is和==的区别
Mar 21 #Python
You might like
PHP函数utf8转gb2312编码
2006/12/21 PHP
php 特殊字符处理函数
2008/09/05 PHP
php MessagePack介绍
2013/10/06 PHP
PHP基于socket实现客户端和服务端通讯功能
2017/07/13 PHP
PHP中将一个字符串部分字符用星号*替代隐藏的实现代码
2019/09/08 PHP
php实现JWT验证的实例教程
2020/11/26 PHP
JavaScript 学习笔记(十六) js事件
2010/02/01 Javascript
判断目标是否是window,document,和拥有tagName的Element的代码
2010/05/31 Javascript
js对象数组按属性快速排序
2011/01/31 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
浅谈JavaScript的Polymer框架中的事件绑定
2015/07/29 Javascript
javascript实现超炫的向上滑行菜单实例
2015/08/03 Javascript
获取JS中网页各种高宽与位置的方法总结
2016/07/27 Javascript
老生常谈javascript变量的命名规范和注释
2016/09/29 Javascript
angular4模块中给标签添加背景图的实现方法
2017/09/15 Javascript
浅谈使用React.setState需要注意的三点
2017/12/18 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
javascript中的with语句学习笔记及用法
2020/02/17 Javascript
原生javascript单例模式的应用实例分析
2020/02/23 Javascript
javascript 数组精简技巧小结
2020/02/26 Javascript
vue-resource post数据时碰到Django csrf问题的解决
2020/03/13 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
2020/08/20 Javascript
js实现星星海特效的示例
2020/09/28 Javascript
[01:45]DOTA2众星出演!DSPL刀塔次级职业联赛宣传片
2014/11/21 DOTA
[01:04:35]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第一场
2018/04/04 DOTA
flask框架视图函数用法示例
2018/07/19 Python
深入理解Django自定义信号(signals)
2018/10/15 Python
python学生信息管理系统实现代码
2019/12/17 Python
python模拟点击在ios中实现的实例讲解
2020/11/26 Python
教师节商场活动方案
2014/02/13 职场文书
2014年中秋节活动总结
2014/08/29 职场文书
小学感恩主题班会
2015/08/12 职场文书
幼儿教师远程研修感悟
2015/11/18 职场文书
深入理解java.lang.String类的不可变性
2021/06/27 Java/Android
MySQL实现配置主从复制项目实践
2022/03/31 MySQL
Go语言编译原理之变量捕获
2022/08/05 Golang