浅谈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使用fileinput模块实现逐行读取文件的方法
Apr 29 Python
详解Django通用视图中的函数包装
Jul 21 Python
Python爬虫:通过关键字爬取百度图片
Feb 17 Python
对numpy中数组转置的求解以及向量内积计算方法
Oct 31 Python
selenium使用chrome浏览器测试(附chromedriver与chrome的对应关系表)
Nov 29 Python
Python之列表实现栈的工作功能
Jan 28 Python
Python单元和文档测试实例详解
Apr 11 Python
Pytorch to(device)用法
Jan 08 Python
浅谈keras的深度模型训练过程及结果记录方式
Jan 24 Python
Django中文件上传和文件访问微项目的方法
Apr 27 Python
opencv之颜色过滤只留下图片中的红色区域操作
Jun 05 Python
PyTorch安装与基本使用详解
Aug 31 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
Thinkphp中的curd应用实用要点
2015/01/04 PHP
php面向对象中static静态属性和静态方法的调用
2015/02/08 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
2015/05/13 PHP
Zend Framework实现具有基本功能的留言本(附demo源码下载)
2016/03/22 PHP
基于jquery的关于动态创建DOM元素的问题
2010/12/24 Javascript
Jquery 的扩展方法总结
2011/10/01 Javascript
解决js数据包含加号+通过ajax传到后台时出现连接错误
2013/08/01 Javascript
jQuery Mobile 导航栏代码
2013/11/01 Javascript
javascript写的异步加载js文件函数(支持数组传参)
2014/06/07 Javascript
JavaScript使用addEventListener添加事件监听用法实例
2015/06/01 Javascript
简介JavaScript中的getSeconds()方法的使用
2015/06/10 Javascript
浅谈JavaScript的Polymer框架中的事件绑定
2015/07/29 Javascript
js实现简单秒表走动的时钟特效
2020/03/25 Javascript
Bootstrap页面布局基础知识全面解析
2016/06/13 Javascript
jquery 判断div show的状态实例
2016/12/03 Javascript
微信小程序使用progress组件实现显示进度功能【附源码下载】
2017/12/12 Javascript
快速解决vue-cli在ie9+中无效的问题
2018/09/04 Javascript
vue+axios+element ui 实现全局loading加载示例
2018/09/11 Javascript
nodejs的安装使用与npm的介绍
2019/09/11 NodeJs
小程序实现上传视频功能
2020/08/18 Javascript
解决Python requests库编码 socks5代理的问题
2018/05/07 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
2018/06/13 Python
对python产生随机的二维数组实例详解
2018/12/13 Python
pandas对dataFrame中某一个列的数据进行处理的方法
2019/07/08 Python
python实现替换word中的关键文字(使用通配符)
2020/02/13 Python
Python线程协作threading.Condition实现过程解析
2020/03/12 Python
Pygame的程序开始示例代码
2020/05/07 Python
俄语专业毕业生求职信
2014/07/12 职场文书
医院领导班子查摆问题对照检查材料思想汇报
2014/10/08 职场文书
合同审查法律意见书
2015/06/04 职场文书
幼儿园小班教育随笔
2015/08/14 职场文书
2016年党员岗位承诺书
2016/03/24 职场文书
MySql开发之自动同步表结构
2021/05/28 MySQL
MySQL中的引号和反引号的区别与用法详解
2021/10/24 MySQL
浅谈css实现背景颜色半透明的两种方法
2021/12/06 HTML / CSS
了解MySQL查询语句执行过程(5大组件)
2022/08/14 MySQL