浅谈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的web框架中配置app的教程
Apr 30 Python
python web框架学习笔记
May 03 Python
pandas 数据实现行间计算的方法
Jun 08 Python
Python面向对象基础入门之设置对象属性
Dec 11 Python
在Python 中同一个类两个函数间变量的调用方法
Jan 31 Python
Python 中包/模块的 `import` 操作代码
Apr 22 Python
解决python xx.py文件点击完之后一闪而过的问题
Jun 24 Python
基于python求两个列表的并集.交集.差集
Feb 10 Python
python标准库OS模块详解
Mar 10 Python
基于python实现检索标记敏感词并输出
May 07 Python
python 模拟登陆github的示例
Dec 04 Python
Python进程间的通信之语法学习
Apr 11 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面向对象继承用法详解(优化与减少代码重复)
2016/12/02 PHP
php json相关函数用法示例
2017/03/28 PHP
prototype 源码中文说明之 prototype.js
2006/09/22 Javascript
JS 跳转页面延迟2种方法
2013/03/29 Javascript
js 时间格式与时间戳的相互转换示例代码
2013/12/25 Javascript
前端性能优化及技巧
2016/05/06 Javascript
jquery  实现轮播图详解及实例代码
2016/10/12 Javascript
基于javascript实现的快速排序
2016/12/02 Javascript
nodejs使用express获取get和post传值及session验证的方法
2017/11/09 NodeJs
解决vue中使用swiper插件问题及swiper在vue中的用法
2018/04/04 Javascript
jQuery基于随机数解决中午吃什么去哪吃问题示例
2018/12/29 jQuery
JavaScript ES6 Class类实现原理详解
2020/05/08 Javascript
如何在JS文件中获取Vue组件
2020/09/16 Javascript
原生JavaScript实现拖动校验功能
2020/09/29 Javascript
[15:57]教你分分钟做大人:斧王
2014/10/30 DOTA
Python 用Redis简单实现分布式爬虫的方法
2017/11/23 Python
如何利用Python分析出微信朋友男女统计图
2019/01/25 Python
idea2020手动安装python插件的实现方法
2020/07/17 Python
python如何利用Mitmproxy抓包
2020/10/10 Python
Biblibili视频投稿接口分析并以Python实现自动投稿功能
2021/02/05 Python
基于Modernizr 让网站进行优雅降级的分析
2013/04/21 HTML / CSS
Michael Kors加拿大官网:购买设计师手袋、手表、鞋子、服装等
2019/03/16 全球购物
实习自我评价怎么写
2013/12/02 职场文书
市政施工员自我鉴定
2014/01/15 职场文书
会计学毕业生求职信
2014/06/25 职场文书
2015年农村党员干部主题教育活动总结
2015/03/25 职场文书
校长一岗双责责任书
2015/05/09 职场文书
运动会100米加油稿
2015/07/21 职场文书
婚宴领导致辞
2015/07/28 职场文书
企业团队精神心得体会
2016/01/19 职场文书
如何写一份具有法律效力的借款协议书?
2019/07/02 职场文书
普希金诗歌赏析(6首)
2019/08/22 职场文书
python控制台打印log输出重复的解决方法
2021/05/14 Python
python源码剖析之PyObject详解
2021/05/18 Python
python中subplot大小的设置步骤
2021/06/28 Python
关于PostgreSQL JSONB的匹配和交集问题
2021/09/14 PostgreSQL