00:00
呃,下面呢,我们来给大家讲一下这个排序啊,排序准确讲呢,也不是什么数据结构,而是呃,一些方法,在我们做这个面试,或者是做一些这个排序处理的时候呢,我们会常用到的一个东西,呃,前面呢,同学们已然学过这个冒泡,所以冒泡呢,我这里就不讲了,我重点讲这么几个方法啊,一个是选择排序,一个是插入,一个是快速,一个是归并,那么快速和归并呢,都会用到递归,而且它的速度确实很快,待会儿呢,我们每写一个。哦,我们每写一个排序,我们就来实际的测试,测一下它的速度。测测试一下它的排序速度,好,那现在呢,我们首先看一下冒泡,冒泡我就不多说了,简单的看一下就行啊,代码我这已经准备好了,那么冒泡的基本思想就是这样子的,在。就是说通过这个排序序列从后向前,把这个下标较大的元素开始依次比较,发现呃,根据你的需求是从大到小还是从小到大进行一个交换就完了,所以它整个过程呢,实际上是呃,同学们就像一个水泡一样,对吧,大的往上跑,小的往下,但如果你是呃从小到大或或者从从大到小不一样那。
01:23
在交换的时候判断不一样就可以了,那具体代码呢,这已经有一个了,那这段代码呢,我我就不去讲了,我重点在这个地方测试了一下它的排序时间,我这里一共设置了这么一个数据啊,我设置这么一个数据。8万。我们就设置八万八万个,待会儿呢,我们看一下代码我是怎么写的啊。好,我把我把这段代码拿过来用一用。因为这这个冒泡同学们已经非常熟悉了,我就不讲了。同学们,在前面老师应该讲过这个冒泡了。
02:00
基本的,那现在呢,我们。专写一个包包。专写一个包,这个包呢,我们就叫排序,叫少。好,现在呢,先讲的是先看的是一个冒泡排序,BB Le bubble so。来吧,各位同学,好的,我把这个代码给大家拿过来。那么我们看看一下这个代码啊,大体看一下这个代码很简单,我我在这呢,直接测试的是呃,一个这样的数据,比如说我先把它改成一个小的,看看对不对。我是怎么做的呢?为了测试它的速度,我先创建了一个random的一个对象,然后呢,呃,去创建了一个速度大小为八的,然后这边用一个for循环,这个for循环干什么呢?这个负循环就是用来循环的产生,循环的生成,生成随机数。啊,非常简单,然后这个随机数,大家看这个方法next next应该就是我产生的这个随机数,是在这个一到这个八八,呃800万之间,好像各十百千万,十万八百万之间,把它数据分散一点,越越散越容易出效率,在这里呢,我打印一个排序钱。
03:20
把排序前的时间打出来了啊,这里我需要引一下包。啊,这个是u tr包,这边呢也需要一个包,这个很简单啊同学们,那么排序前的时间就出来了,紧接着呢,我把这个数据排序前的数据打出来了,排序后排序后那这地方写的有点问题啊,写到下面来。这这段代码,同学们。这段代码就是排序。就是冒泡,冒泡排序的一个方法。好冒泡排序bubble sort怎么写的呢?我就。不再去说了啊,同学们很熟悉,这是怎么怎么做的,好,然后呢,慢排序完了过后,我们把这个排序后的时间也打出来了,我们看一下当有八个数据,当然肯定是秒杀啊这个。
04:14
这个运行主要是看结果对不对,你看啊,排序前呢,我们是这么一个随机的数组啊,大小肯定是,呃,不是按照从小到大的,那排序过后我们可以证明的确排序了,好,现在至少证明我们冒泡排序没有问题,现在呢,我们来测试效率。我把这个数据改了,改成8万,我也不写太大。8万他就需要将近十秒左右了,那么一写80万那就太慢了啊,再把它改一改。好同学们,现在我会随机产生,呃,8万个数据,放在这个数组里面去,当然8万数据太大了,我就不能再怎么样,不能输出了,这个输出。这个输出的时间会很长,就看不到排序时间了,我把这个删除。
05:02
在这个排序过后,我也。不输出了,直接只看这个排序,呃,所花的时间。看清楚了啊,三走一下。运行过后呢,我们看一共花了多少时间。十秒左右,大概是11秒或者12秒的样子。好,我们看这个结果呢,应该马上就出来了啊,还很慢。好,排序前是。也好,大家看一下,大概花了13秒左右。大概。呃,待会儿我们要做比较,就说8万个数据,这个冒泡排序一共花了13秒,我们先记到这里来。好,把这个时间先记下。使用冒泡啊,使用冒泡。排序。时间为。时间为多少呢?13秒。对不对,没问题,好冒泡。我们就说到这儿,因为。冒泡大家都熟悉,我就不讲了啊,那接着呢,我们就讲下一个排序,下一个排序呢,也是我们。
06:06
这个经常用到的一个排序,它的速度和效率会远远的高于我们的冒泡,待会儿呢,我们要证明这个事儿,那么这个选择排序呢,也是我们在面试的时候经常会让你写的,比如说他拿出这个纸和笔,让你写个选择排序,大家要写的出来啊。你们写的出来吗?可能写不出来是吧,冒泡可能有点忘了,那么看一下选择排序也是属于内部排序法,哎,对,我把这个冒泡先。
我来说两句