董小姐花痴记——冒泡排序与选择排序

Posted Duing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了董小姐花痴记——冒泡排序与选择排序相关的知识,希望对你有一定的参考价值。

hello,小伙伴们大家好,新开的《董小姐花痴记》系列从今天开始就正式登场和大家见面啦~主要讲算法知识,而之前的《邓哥奇遇记》系列主要讲网络知识,不过大家不用担心,《邓哥奇遇记》系列没有停止,还会继续更新哦~


董小姐花痴记——冒泡排序与选择排序


排序是算法的世界里最基础的问题,而冒泡排序和选择排序是排序算法里最简单的排序算法~很多同学经常弄混两种排序,今天我们就来详细探究冒泡排序和选择排序的区别~


在文章开篇之前,我们还是用一句话来描述冒泡排序和选择排序的精髓,那就是:排序 = 算法 + 比较 + 交换(此公式针对冒泡和选择)


通过之前的文章,大家肯定对邓哥的“浪”已经很熟悉了。那么今天我们来聊聊我们董小姐的习性~董小姐没有邓哥抽烟、喝酒、烫头、浪那么多的属性。董小姐就两个特性,逛~痴~逛~痴~,逛街和犯花痴~董小姐经常逛着街,看到小哥哥就走不动道了~


有一天,大家组团去逛商场,走到商场门口时,董小姐忽然止步不走了,顺着董小姐的目光望去,不远处立着彭于晏、胡歌、李易峰、刘昊然的宣传海报。


我们知道董小姐的花痴病又犯了。董小姐要给他们按照帅的程度排完序再走。我们的心里此时是崩溃的。这时邓哥却主动请缨,站到了海报一侧,要求参与排序。我们的心情瞬间从崩溃转化为对邓哥的怜悯。


排序之前,董小姐先给每个人的颜值进行打分,彭于晏:98分、胡歌:99分、李易峰:98分、刘昊然:97分、邓哥:2分。


董小姐要对颜值从低到高进行排序。


在笔面试时,一定要看好是从小到大还是从大到小排序。这时我们得到了一个数组[98, 99, 98, 97, 2];

在正式进行排序之前,我们要先做好我们的排序工具。在文章最开始我们就给出了公式:排序 = 算法 + 比较 + 交换

这里的算法自然指的是冒泡和选择,那么比较和交换是什么鬼?

比较和交换是两个基本方法。

比较的作用是:比较两个数,给出是否需要交换。而交换的作用是:要将两个数进行换位。我们先写出比较函数和交换函数


我们先来看比较函数:


董小姐花痴记——冒泡排序与选择排序


因为是从小到大排序,所以如果a≤b就不用交换了~否则就是a>b,那么就需要将a和b的位置进行交换,就要返回true。

然后我们再来看交换函数:


董小姐花痴记——冒泡排序与选择排序


这里的indexA指的是a的位置,indexB指的是b的位置。这时计算机中,最常见的通过第三个变量实现a和b数值互换的写法。


有了这两个函数之后,我们就可以开始进行排序啦~


1率先出场的是冒泡排序:


无论是选择还是冒泡,每一轮都是要找到当前最大的那个数。冒泡排序我用一句话来形容就是:过五关,斩六将。


为什么用一个词形容冒泡排序是过五关斩六将呢?是因为一个数,要想从第一个位置走到最后的位置,需要进行多轮的比拼(比较)和厮杀(交换)才能走到最后,而且每次比较都可能进行交换。


我们来看一下冒泡排序的写法:


董小姐花痴记——冒泡排序与选择排序


2其次出场的是选择排序:


选择排序我用一句话来形容就是:选出一个数,扔到后面去。我们可以通过下面的代码看出,选择排序就是每一轮,选出一个最大的数,交换到最后面。


董小姐花痴记——冒泡排序与选择排序


3最后我们来对比一下选择和冒泡:


冒泡排序:比较一下交换一下。

选择排序:比较一下记录一下,比较一圈交换一下。


董小姐花痴记——冒泡排序与选择排序


冒泡排序强调两个数之间的相对位置,所以数组越是有序的,冒泡排序的交换次数就会越少。


选择排序强调每个数的绝对位置,所以无论数组是什么样,耗时都基本相同。


在董小姐对诸位帅哥排序之后,董小姐得到了自己满意的序列:胡歌,彭于晏,李易峰,刘昊然,邓哥。


我们恭喜邓哥,以97分的微弱劣势与此次“选帅”的第一名失之交臂~


董小姐花痴记——冒泡排序与选择排序


重要消息


董小姐花痴记——冒泡排序与选择排序

董小姐花痴记——冒泡排序与选择排序

小伙伴们,你们还想看什么类型、题材的文章?或者在学习前端过程中有哪些痛点呢?欢迎在图文下方给小渡留言,小渡会筛选出共性问题,或呼声最高的类型文章,手动联系业内大牛帮你约稿哦~

以上是关于董小姐花痴记——冒泡排序与选择排序的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript算法(冒泡排序选择排序与插入排序)

选择排序与冒泡排序

选择排序与冒泡排序

排序算法-冒泡排序(改),选择排序

数组中冒泡排序直接选择排序反序排序原理与区别

冒泡排序算法与选择排序算法