浅谈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嵌套函数使用外部函数变量的方法(Python2和Python3)
Jan 31 Python
Centos Python2 升级到Python3的简单实现
Jun 21 Python
python Crypto模块的安装与使用方法
Dec 21 Python
pyqt5自定义信号实例解析
Jan 31 Python
python使用锁访问共享变量实例解析
Feb 08 Python
python对列进行平移变换的方法(shift)
Jan 10 Python
python去重,一个由dict组成的list的去重示例
Jan 21 Python
浅谈python的输入输出,注释,基本数据类型
Apr 02 Python
pyQt5实时刷新界面的示例
Jun 25 Python
django-rest-framework解析请求参数过程详解
Jul 18 Python
Python+Appium实现自动化测试的使用步骤
Mar 24 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
Nov 22 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
DedeCMS 核心类TypeLink.class.php摘要笔记
2010/04/07 PHP
php中simplexml_load_string使用实例分享
2014/02/13 PHP
Laravel实现表单提交
2017/05/07 PHP
yii2 resetful 授权验证详解
2017/05/18 PHP
限制textbox或textarea输入字符长度的JS代码
2013/10/16 Javascript
jQuery设置和移除文本框默认值的方法
2015/03/09 Javascript
jquery实现可横向和竖向展开的动态下滑菜单效果
2015/08/24 Javascript
JS实现兼容性好,带缓冲的动感网页右键菜单效果
2015/09/18 Javascript
详解前端自动化工具gulp自动添加版本号
2016/12/20 Javascript
JavaScript中数组的各种操作的总结(必看篇)
2017/02/13 Javascript
jQuery滚动插件scrollable.js用法分析
2017/05/25 jQuery
jQuery实现frame之间互通的方法
2017/06/26 jQuery
微信小程序中setInterval的使用方法
2017/09/29 Javascript
jQuery实现简单的回到顶部totop功能示例
2017/10/16 jQuery
bootstrap与pagehelper实现分页效果
2018/12/29 Javascript
详解关于element级联选择器数据回显问题
2019/02/20 Javascript
NodeJS读取分析Nginx错误日志的方法
2019/05/14 NodeJs
微信小程序实现上拉加载功能
2019/11/20 Javascript
Vue简单实现原理详解
2020/05/07 Javascript
vuecli3.x中轻松4步带你使用tinymce的步骤
2020/06/25 Javascript
解决vue做详情页跳转的时候使用created方法 数据不会更新问题
2020/07/24 Javascript
vue之封装多个组件调用同一接口的案例
2020/08/11 Javascript
vue-cli打包后本地运行dist文件中的index.html操作
2020/08/12 Javascript
[55:56]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
Python3计算三角形的面积代码
2017/12/18 Python
pytorch + visdom CNN处理自建图片数据集的方法
2018/06/04 Python
python 实现多线程下载视频的代码
2019/11/15 Python
浅析Python 条件控制语句
2020/07/15 Python
不同浏览器对CSS3和HTML5的支持状况
2009/10/31 HTML / CSS
5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)
2016/08/15 HTML / CSS
尼克松手表官网:Nixon手表
2019/03/17 全球购物
四群教育工作实施方案
2014/03/26 职场文书
高二学生评语大全
2014/04/25 职场文书
2015年财务工作总结范文
2015/03/31 职场文书
给老婆的保证书怎么写
2015/05/08 职场文书
vue实现省市区联动 element-china-area-data插件
2022/04/22 Vue.js