00:00
好,我们继续来上课,那么本关呢,我们再看一下我们的冒泡排序和我们的函数啊,那么冒泡排序呢,一样也是根据我们数组的这个相关的啊,那咱们来看一下,在这里边我们直接用代码来去证明怎么叫做冒牌排序啊,在这里边我新建一个这个01PP文件啊,比如叫做冒泡,那么咱们说了,咱们叫排序肯定是要将数组的数据进行排序,对吧?那么什么叫冒泡呢?咱们想一下冒泡,所谓的冒泡是不是就比如说这一圈一圈一圈一圈,是不是一圈一圈开始干嘛从里边往外冒啊,哎,这是就冒泡对吧?那么也一样在这里面,比如说我在这里面定义一个宿组啊,冒泡排序呢,在对于我们宿组在排序的时候用的也是很常用的啊,那么在这里面,比如说我这里面写点内容啊,比如说有写个这个2351。比如有这么四个值对吧,我们简单点,那这个时候我们要开始干嘛呢?给他做什么,做摸牌排序,那怎么排呢?我每次啊,比如说第一次我先找什么,找到我最大的值,最大值,当然这里边也涉及到什么,也涉及到两个变量的一个交换,对吧?也就是说比如说我二跟三再去做比较的时候,如果二没有三大是是不换位置对吧?三跟五在做比较的时候,如果三没有五大,是不是不换位置,五跟一比较时候,如果五比。
01:11
一大是不是就换位置,如果五没有一大是不是不换位置,对吧?所以当我做冒泡排序的时候,那比如说第一次我是不是找到最大的值,对吧,叫什么每次。每次。干嘛找到?最大的值,那这不就是从小往外进行什么最大的排序,也就相当于从小到大了,对吧?每次找最大值,那第一次你想想第一次我二跟三就比较不变,那二三对吧,然后五跟一继续做比较,那不是三跟五三跟五是不是也不变?对吧,位置也不变,但五五要是跟一比较的时候,等五跟一比较的时候,它俩谁大是不是五大呀,所以一跟五换,那你看第一次的时候,我是不是就找到了什么,找到了我第一大的值。对吧,那好了,那第一次完事以后,因为这里面总共四个值,总共四个值,我每次找一个,就是不是把后三个都找到了,后三个最大的值都找到了,那最后一次是不是就不用了。
02:01
对不对,那你再来看,那第一次我235你找到了,那第二次呢,二跟三比较,二还是没三大不换对吧,那三跟一比较的话,一是比三大,那是不是要换换个位置对吧?然后三跟五比较,那没有了是不是就二三。2135了对吧,然后再往后呢,那再往下来什么,再往下来是不是就剩一次了,就一跟二比较一下就行了,对吧,一跟二比较,那大是不是换个位置,然后三然后五,那最终我们得到结果是不是1235啊。对不对,那么怎么样去做这样的一个一个算法呢,一个排序呢,首先肯定是我们要做循环对吧,而这两个循环第一次我先拿到什么,拿到这个二,我开始跟每一个值进行比较,是不是这样的,那也就是说这里面我们要制作循环,比如说我用,因为我是所引数组,我就可以用什么用,用这个放循环了吧,比如我看到这个到雷压。看到导啊,然后呢,我放循环,比如Dollar了I等于零对吧,Dollar了I小于谁是不是小于它的这个长度L1刀了L1对,那咱说了我用不着每次都比较,我是不是只比较一次就行,就是只少一次就行了,对吧?比如说第一次的话,我这里面总共四个值,我是不是比较前三个就已经可以了。
03:03
对不对,哎,所以说这个时候我就直接干嘛,让他减个一啊,然后呢,让他加价,当然我不减一行不行,是不是也没问题啊,对吧,然后只是多输出一次嘛,然后让I再加。都来加加好了,那加加完以后,那这个时候注意这个时候你看我来输出啊,VR-DP我们来打印这个值啊,直接是谁啊,直接是这个呃,Dollar a。Dollar a里边的Dollar a,你看我都输出了谁啊,也就最终我们要知道我都拿谁做了比较对不对。来这里边一样啊。LINE。下边的零一啊,下边的lesson lesson。刷。好,零一冒号。当我选择了未定义的常量I,未定义的常量ii哪有I啊,到了I吧,哎,好了,这个时候再来刷新好了,你看拿谁的,拿的是二三,这不最后一个值我就没让他参与运算了,对吧?哎,只需要干嘛让他前三个这样去去比就行了。
04:05
对不对,哎,好了,那接下来呢,接下来也一样,我每次咱说每次都少一个,那我再放循环继续,我拿到每一次,你看每外能循环拿到一个值,每循环拿一的是不是跟里边的值进行比较啊,对吧,是不是跟刀了。勾等于零,到了勾也要小于谁,Len len。减去,减去谁是不就可以减去到了I。再减一个一呀,对吧,因为Dollar I我们已经循环出来了,是不是我可以再省略一个对吧,然后呢,这个Dollar勾加价,哎,也就是说现在比如说Dollar I当前是谁,当前比如说Dollar I拿的是二二我有必要跟自己比吗?没有,我二是不跟后面的那个比较,对不对?所以我现在让他再减一个,减去Dollar I以后再减这个。再减这个一对不对,那现在你再来看里面的刀勾啊,那比如说这里边我直接问二。VAR。
05:00
DP。Du打印打印开始进行比较,跟谁比较,是不是跟Dollar到底的Dollar勾对吧?那你看Dollar勾都输出什么玩意儿啊,那每次循环好外能循环,我给它输出一个HR,因为我们最终会循外面循环一次,比如外面循环一次,里边是不是循环三次,是不是这个意思,哎,所以每循环一会要输出一个横线,那这回再来你看啊,第一次我是二十三五,第二次是23,最后一次是不是就二对吧,这每次都会减少一个,每次都会减少一个。没错吧,哎,那接下来是不是开始进行比较了,那谁跟谁比较,是不是我的第一个数跟我的第二个数进行比较,如果它要大,是不就换位置,但在PB里面只要两个变量换位置,是不是就需要一个临时变量来帮忙啊,对不对?所以在这里面我来判断,我如果Dollar了,AR里面的Dollar勾它要是大于Dollar AR里面的Dollar勾加一。Dollar勾加一,我觉得直接让它跟它后面的数比较就行了,对吧,如果它大于这个Dollar勾加一的话,那好,那我到tmp。就等于Dollar a里面的Dollar勾是不是开始交换位置对吧,然后呢,Dollar a里面的Dollar勾呢,就应该等于什么Dollar a。
06:07
里边的。到了沟。加1万,哎,然后最后最后怎么样,最后呢,是不是到了AR里边到勾。加一就应该等于Dollar tmp是不是来回变换一下位置对吧?好了,那这回完事以后最终干嘛,我是不是打印刀AR就行了,VRDMP我们来打印这个刀了AR对吧?但是打印它之前我先在这里面打印,也就是每换完位置的时候,我都给它打印一次啊VR-DP打印dollarr,我们看他每一次是怎么比较的,来再来刷新,你看第一次2315是不是找到了最大的值,对吧?第二次呢,2135是不是找到了第二大的值,第三次呢,是不是跟他俩直接兑换一下就行了,1235我是不是找到了。对吧,那这样的话,我是不是就做到了一个排序啊。对不对,哎,这就是咱们的冒泡排序,那么主要干嘛,主要是对于这块减不减你都无所谓了,对吧,我直接就就拿整个数轴的长度,你看是不是也行啊,比如说把真的把它也深的对吧,比如说这块大家不太好理解对吧,算不明白算不来不要紧的,我直接跟它数组整个长度呗,那再来刷新。
07:12
你看好了啊,他报一个数,在第十行和第12行,第十行。和第12行啊,因为我在这里面每次都跟下一个值加一了,对吧,所以他开始跟我干嘛跟我报错吧,哎,那如果我不给的话,我甚至跟到ipad进行比较啊。对不对,哎,所以这里边我还是一样,我给它减一吧,啊减一。刷新一下,我倒了勾是不是也要减一对吧,倒了勾,比如我先给他减个一啊。呃,点一。但是我没捡到了L,好了,这回没有错了,你看第一次2315找到五,第二次232135找到三伏五对吧,第三次是不是1235是不是也可以对吧?哎,只是我再给他减去一个Dollar了,I的话啊,干嘛,是不是让他再少少一次就行了,对吧?但一样我最终输出的也是这三个结果,也是会比较三次,因为我四个值,四个值是不是就要比较三次啊。
08:05
能明白吧,哎,这就是什么,这就是咱们的这个。冒泡排序啊,那最终我在我的这个循环的外边啊,今天我正是在里面打印的,是为了给大家看对吧,那比如这块我注册掉,然后我给它复制出来啊,复制到哪了,复制到这外边,我让它来打印这个arr,这个时候你看我第19行打那AR是不是就是1235,是不是已经是排序好的了。对不对,哎,这就是咱们的冒泡排序啊,好了,那OK,这节课我们到这。
我来说两句