停课不停学

有趣的算法——冒泡排序

01

生活中处处都有算法

每个人每天都会用到一些算法,算法也是人类使用计算机解决问题的技巧之一,但是算法并不是仅仅用于计算机领域中,包括在数学、物理甚至是每天的生活中,都有广泛的应用,在日常生活中就有许多工作可以使用算法来描述,例如员工的工作报告,宠物的饲养过程,厨师准备美食的食谱,学生的课程表等,如今我们几乎每天都要使用各种各样的搜索引擎必须要借助不断更新的算法来进行。

常用的算法一般可以用中文、英文、数字等文字来描述,即用语言来描述算法的具体步骤,例如,在小品《钟点工》中有这样一个问题:要把大象装进冰箱,总共分几步?最后的答案是三步,第一步,把冰箱门打开;第二步,把大象装进去;第三步,把冰箱门关上。

上面的举例听上去像是一个笑话,但是也算是一个简单的使用语言来描述的算法。

生活中还有很多类似的简单算法,菜谱是做菜肴的算法,产品的说明书是操作产品的算法,今天我们主要介绍在计算机编程中用的算法。

02

 认识算法

算法是指解题方案准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。可以简单理解为“在有限步骤内解决数学问题的程序。”如果运用在计算机领域中,我们也可以把算法定义为:“为了解决某项工作或是某个问题,所需要有限数量的机械性或是重复性指令与计算的步骤。

在我们日常生活中我们做的任何事情都是在一定条件下按照某种顺序执行的一系列操作。解决数学问题也是如此,比如使用加减消元法解决二元一次方程组时,就可以按照某一步骤进行操作,

算法特点:

1. 有穷性:一个算法应包括有限的操作步骤,能在执行有穷的操作步骤之后结束。

2. 确定性:算法的计算规则及相应的计算步骤必须是确定的。

3. 可行性:算法中的每一个步骤都是在有限的时间内完成的,并能得到确定的结果。

03

  排序算法

排序是将一个数据元素的任意序列,重新排列成某一个按照关键字有序的序列,在我们生活中经常会出现排序的情况,比如从低到高排队,以及一些成绩的排名,当然大部分情况我们是将很多组数据进行升序或是降序排序,数据较多时我们可能会使用电脑帮助我们一键排序,但有非常庞大的数据时电脑是如何排序的,接下来就跟着老师一起认识一下排序算法——冒泡排序。

冒泡排序:

冒泡排序是最简单的排序方法,理解起来容易。虽然它的计算步骤比较多,不是最快的,但它是最基本的。

冒泡排序的原理是:从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来。

以从小到大排序为例,第一轮比较后,所有数中最大的那个数就会浮到最右边;第二轮比较后,所有数中第二大的那个数就会浮到倒数第二个位置……就这样一轮一轮地比较,最后实现从小到大排序。

举例排序数字5、4、2、7、3

第一次遍历过程:

5、4、2、7、3——比较5和4的大小(5>4)4、5、2、7、3

4、5、2、7、3——比较5和2的大小(5>2)4、2、5、7、3

4、2、5、7、3——比较5和7的大小(5<7)4、2、5、7、3

4、2、5、7、3——比较7和3的大小(7>3)4、2、5、3、7

第二次遍历过程:

4、2、5、3、7——比较4和2的大小(4>2)2、4、5、3、7

2、4、5、3、7——比较4和5的大小(4<5)2、4、5、3、7

2、4、5、3、7——比较5和3的大小(5>3)2、4、3、5、7

第三次遍历过程:

2、4、3、5、7——比较2和4的大小(2<4)2、4、3、5、7

2、4、3、5、7——比较4和3的大小(4>3)、2、3、4、5、7

第四次遍历过程:

2、3、4、5、7——比较2和3的大小(2<3)2、3、4、5、7

排序结束结果为2、3、4、5、7

细心的小朋友学习完冒泡排序就会发现,冒泡排序虽然简单但是也会有很多缺陷,比如运行速度比较慢,冒泡有一个最大的问题就是这种算法不管你有序还是没序,算法都会将你给定的数据循环比较了。

比如我举个数组例子:[ 5,7,11,13,19 ],一个有序的数组,根本不需要排序,它仍然是双层循环一个不少的把数据遍历干净,这其实就是做了没必要做的事情,属于浪费资源。

聪明的小朋友认真思考下有没有其他的策略机制可以避免冒泡排序算法出现上面的问题。

图文:张世钰 部分来自网络

编辑:葛钰

审核:董庆明 黄小雷 徐红

冒泡排序出现的问题_停课不停学 | 有趣的算法——冒泡排序相关推荐

  1. 苹果怎么换行打字_停课不停学!苹果电脑学习类软件推荐,丰富您的假期生活...

    在这样一个特殊时期,你是否在家倍感无聊呢?不如利用这个假期好好的学习一番吧! 停课不停学,macdown小编为大家推荐一些苹果电脑各种学习类软件,希望能够帮助大家学习.生活两不误,丰富大家在特殊时期的 ...

  2. 苹果怎么换行打字_停课不停学!推荐苹果电脑学习类软件,丰富您的假期生活...

    在这样一个特殊时期,你是否在家倍感无聊呢?不如利用这个假期好好的学习一番吧! 停课不停学,macdown小编为大家推荐一些苹果电脑各种学习类软件,希望能够帮助大家学习.生活两不误,丰富大家在特殊时期的 ...

  3. blob 在线解码_停课不停学——网达软件全力护航在线教育“空中开讲”

    3月2日,上海140万中小学生走进"空中课堂",正式开始在线学习.疫情爆发后,为响应教育部 "停课不停学"的号召,网达软件在春节假期迅速启动应急机制,紧急部署, ...

  4. python实用脚本 知乎_停课不停学|38 个免费 Python 项目合集,从小白到老司机!...

    1665 年,牛顿在剑桥三一学院就读期间,伦敦发生了著名的鼠疫.这场鼠疫几乎摧毁了整个伦敦城,无论是下层人民还是王室贵族都难逃魔掌,几乎五分之一的伦敦人都在这场鼠疫中丧生. 牛顿被迫回家进行自我隔离, ...

  5. 下载银海浏览器_【教师研培】停课不停学 停课不停研 ——记银海学校全体英语教师参加市教科院“超越时空 传递智慧”第二轮教研直播活动...

    停课不停学 停课不停研 --记银海学校全体英语教师参加市教科院"超越时空 传递智慧"第二轮教研直播活动 此次带来线上讲座的共有三位专家,首先是株洲市教科院易老师带来的<小学英 ...

  6. 关于主机的思维导图_「停课不停学」思维导图—初中语文全部知识点总结,高清可打印...

    导读 思维导图的创始人东尼·博赞先生在读大学的时候,作为一名大一新生,在第一天上课时,好奇心就被略带傲慢的教授点燃了,因为他之前从来没见一个老师可以不用翻花名册点名,而且是第一次上课,全部是新生的情况 ...

  7. 停课不停学 阿里云天池免费开放AI实训平台

    疫情肆虐,牵动着每个人的心.当下,正值抗击疫情的关键时刻,近日教育部也下发了2020年春季学期延期开学的通知,并提出利用网络平台保障防控疫情期间学生"停课不停学",全国诸多高校也纷 ...

  8. “停课不停学”,线上填报如何逼疯老师

    正月一出,2020年的春节就算过去了 然而出于对疫情防护的需求 大部分企业延迟了复工日期 并纷纷开启了远程办公模式 各种远程办公软件也着实火了一把 但是在家办公并非我们想的那样 零食与床的诱惑 宠物与 ...

  9. 阿里云助力宁波市教育局“甬上云校”停课不停学

    突如其来的新冠病毒肺炎疫情,让全国的师生正在经历着一个非常特殊的寒假. 疫情当下,教育部明确要求2020年春季延期开学,并且鼓励利用互联网和信息化教育资源确保学生"停课不停学".虽 ...

最新文章

  1. [JS] 关于parseInt的一个小知识:[‘1‘, ‘2‘, ‘3‘].map(parseInt)
  2. 在asp.net中使用jQuery实现类似QQ网站的图片切割效果
  3. arch Linux 安装完,无法通过 SSH 远程连接 root 用户问题
  4. Aggregate累加器
  5. 调整weblogic内存的分配和使用
  6. linux shell 脚本 2,理解Linux Shell和基本的Shell脚本(2)
  7. 小白的markdown基础语法总结
  8. 每天一道LeetCode-----生成由[1 : n]这n个数组成的所有二叉搜索树
  9. 苹果开发者中心宕机8天终于回归
  10. 数据库mysql局部变量_MySQL内核技术之“pthead局部变量”
  11. 解决windows10下总是很快自动黑屏进入睡眠问题
  12. CentOS7 网络安装版本 设置基础软件仓库出错
  13. 巴比特 | 元宇宙每日必读:多路径试水却并未摸清元宇宙的轮廓,互联网大厂对元宇宙的布局仍处于“盲人摸象”的阶段?...
  14. 中国联通沃云----弹性块存储使用说明
  15. lol-----寒冰射手-----艾希
  16. 5角硬币中的币王,已价值16000元,谁家有?
  17. 【威胁通告】攻击者利用漏洞攻击Edimax WiFi桥接器
  18. 中国高校计算机大赛--网络技术挑战赛(C4-Network Technology Challenge)
  19. C++各行小数点对齐
  20. C# 窗口实现Win7简单屏幕泡泡保护程序 和实现聊天窗口震动

热门文章

  1. 那些做中台的程序员,后来都怎么样了?
  2. 12 条用于 Linux 的 MySQL/MariaDB 安全最佳实践
  3. android 混淆打包教程,Android studio 混淆打包
  4. macos apache php,如何在mac上配置apache和php
  5. 再学大话设计模式--附录(三)
  6. python 从深度相机realsense生成pcl点云
  7. Yolov5 face训练手册
  8. python OrderedDict 详解
  9. cd 在windows下 无法切换盘符目录
  10. python 图像二值化