网站首页 > 资源文章 正文
提到排序算法是否感觉离我们很远,其实不然,排序算法就在我们的生活当中无处不在,例如,可以快速帮助店员确认罗老师想要的咖啡。
点击此处添加图片说明文字
再例如,可以快速地帮助老师对成绩单进行排名。
点击此处添加图片说明文字
排序算法是对一组数据按指定的规则排序,它可以有多种实现方式,常见的排序算法有冒泡排序、选择排序、插入排序等,接下来对这3种排序方式进行介绍。
第1种:冒泡排序
冒泡排序(Bubble Sort):重复地遍历要排序的列表,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历列表的工作是重复地进行直到没有再需要交换,也就是说该列表已经排序完成。
冒泡排序工作原理如下:
01.比较相邻的元素,如果第一个比第二个大(升序),就交换他们两个。
02.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这步做完后,最后的元素会是最大的数。
03.针对所有的元素重复以上的步骤,除了最后一个。
04.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
假设,当前列表list中的元素为[26,3,17,7,31,44,20],使用冒泡排序过程如下图所示。
点击此处添加图片说明文字
接下来,使用简单易学的Python(墙裂推荐)来实现冒泡排序,代码如下:
点击此处添加图片说明文字
第2种:选择排序
选择排序(Selection sort):选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。
选择排序工作原理如下:
01.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
02.再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
03.以此类推,直到所有元素均排序完毕。
对列表list中的元素使用选择排序,其过程如下图所示。
点击此处添加图片说明文字
接下来,使用高级语言Python(墙裂推荐)来实现选择排序,代码如下:
点击此处添加图片说明文字
第3种:插入排序
插入排序(Insertion Sort):它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动。
插入排序工作原理如下:
01.从第一个元素开始,该元素可以认为已经被排序。
02.取出下一个元素,在已经排序的元素序列中从后向前扫描。
03.若该元素(已排序)大于新元素,则将该元素移到下一位置。
04.重复步骤3,直到找到已排序的元素小于或者等于新元素的位置。
05.将新元素插入到该位置后。
06.重复步骤2~5,直至排序完成。
对列表list中的元素使用插入排序,其过程如下图所示。
点击此处添加图片说明文字
接下来,使用面向对象语言Python(墙裂推荐)来实现选择排序,代码如下:
点击此处添加图片说明文字
?
通过上面的介绍,相信小伙伴们已经对冒泡排序、选择排序和插入排序有所了解,在学习算法的道路上一定要多动手练习,切忌纸上谈兵。
猜你喜欢
- 2024-10-17 python 线程安全(python线程安全的字典)
- 2024-10-17 Python实现订单超时自动取消(python自动发货)
- 2024-10-17 Python基础语法知识,3天熟悉你就牛了
- 2024-10-17 「黑马程序员」「成都校区」Python是如何进行内存管理
- 2024-10-17 Python教程:各商品种类的网购替代率如何计算?
- 2024-10-17 python 并发模块介绍(python的并发)
- 2024-10-17 「学习交流」 「成都地区」Python字典底层实现原理
- 2024-10-17 阿里云PYTHON SDK的使用(阿里云服务器跑python)
- 2024-10-17 Python教程:global和nonlocal关键字用法
- 2024-10-17 教你分分钟搞定Linux下yum源配置(linux如何配置yum源)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)