00:00
好了同学们,那咱们接下来继续吧,那上节课呢,咱们主要是一个冒泡排序啊,那么再往下的话,我们看看选择排序啊。选择排序。来这块呢,我们。新建一个类吧,啊叫select select。叫选择排序各位啊。每一次啊。从这堆。参与比较的数据当中找出最小值。啊,拿着这个最小值。和最前面的和最前面的。元素交换位置。
01:04
选择排序啊,拿着这个最小值和最前面的元素交换位置。什么意思啊?选择排序比什么冒泡排序好在,好在什么呢?每一次的交换位置。都是有意义的。你想想咱们上面这个冒泡排序这个交换位置意义大不大。嗯。就是这个交换位置意义大不大,大家思考一下,冒泡的情况下。是不是这个交换位置有点。浪费了。你好,思考思考。比如说你,你应该玩过扑克吧。咱玩会扑克来。我这上没有没有斗地主这个软件是吧?嗯,扑克都玩过啊,你你你自己拿了一手扑克之后,你是怎么,你是怎么排序的,快速排序的,就是你这个排序你是怎么排的。
02:13
就你啥拿了一手扑克,你思考思考。是吧,啊,这是一个扑克啊。对,这是一个,这是一个,这是一个是吧,这是一个。是不是,哎,那这个呢,可能是。八对吧,啊,这可能是九。对吧,这个可能是。是不是啊,可能是。对吧,啊,这个可能是K。你手里现在拿了123455张扑克?你怎么怎么做的呀。啊。一般都八是不是放过来啊。对不对,哎,所以这个就变成什么了。
03:01
是不是这样啊?对吧,哎,然后在剩下的这堆数据里边怎么着。找最小的吧。你你再想想。就是怎么做的,刚才。这个这个在哪,扑克在这吧。一眼望去,一看我六比较小,里边最小的。最小的交换一次位置和最前面的交换一次位置。你这个交换位置是有意义的呀。那这个冒泡是怎么交换的呀?冒泡是你俩进行比较,右左边这个大就交换一次。你这个交换是不是有点太局部了,不是这种观大局方式的交换,你这个一眼望去一共就这些,找出最小的八交换一次,这多有价值啊,你这个在这八跟九的九跟七在晃悠,九和七在这个地方晃悠,晃悠完之后你两个比,比完之后八九跟七交换一下位置,你这个好像意义不是特别大。
04:05
对吧。为什么你看你九跟七叫冒泡啊,冒泡的特点是九到这儿了。对吧,七是不是到这儿交换了,哎,大家思考一下。当你交换完之后呢。交换完来,我挪个位置啊,我再交换一下,你看这个是不是交换了冒泡是不是是不是这样的呀,交换呀,好,我问你,你在这交换完之后,你的九是不是将来跟六比完之后,是不是还得交换呀。你是不是还得再再交换呀,所以说你这个交换有点浪费,就冒泡啊,这个交换位置有点浪费。听懂了吧?啊,那怎么能让它的效率高呢?我们可以让它交换次数,怎么着交换次数变少?对,选择排序就是比冒泡排序的效率高啊,选择排序比冒泡排序的效率高,高在哪儿?哎,高在什么呀?嗯。
05:01
高在交换位置的次数上。啊高,在交换位置次数上选择排序的交换位置是有意义的。啊是有意义的,那选择排序是什么呀,是哎。循环一次,然后找出什么呀,参加比较的这堆数据中最小的。拿着这个最小的值和最前面的数据交换位置。选择排序。它的原理是这样的,核心是这样的啊,每一次从这堆参与写双引号啊,参与比较的数据当中找出最小值。拿着这个最小值和。最前面的元素。
06:01
和参与比较啊,和参与比较的这一堆。最前面的元素交换位置。每一次交换位置都是有意义的。我觉得这个呢,也应该在这里模拟一下啊,比如说现在有一个数据啊,叫31625啊,随便写的一个一个数据啊,有这么一个东西。那么现在呢,参与比较的数据。是什么呀,是325。对不对,那第一次循环之后的结果是什么?找出最小的一看一最小八,把一怎么着和我们的三交换一个位置。对吧,哎,第二次循环之后的结果是什么,那你要注注注意啊,这会儿参与比较的数据就变成了什么。
07:00
各位,原先是31625,当你拿到最小的之后,我接下来把这个拿过来放到这儿,是不是参与比较的数据是这堆数据啊。一就不用参与了吧,因为你一是不是已经拿出来放到最左边了。原始数据是这个31625,经过第一次循环之后的结果是什么?找出最小的值嘛,一对吧,哎,找出最小值一和最前面数据交换吗。对不对,那下边这个呢,就是3625啊,3625也是同样找出这堆数据的最小的是二和最前面数据交换位置,所以第二次循环之后呢,就变成什么呀,哎。二是最小的。放到这。啊,那么参与比较的数据是什么?参与比较的数据是365365啊,那么第三次循环之后的结果是什么呢?
08:02
改成数字啊,第一次第二次第三次第三次循环又找出这波里边最小的。放到最前面吧,三最小放最前面是不是,那这回参与比较的数据是什么呀?是六和五啊。那你六和五这边找出这是什么呀,第四次循环吧,哎,叫第四次循环之后的,哎结果是什么呢?哎是我们五在这儿,然后六在这,这就结束了。就结束了五个数据循环几次啊四次。注意啊,五条数据。循环四次。啊,选择排序参与比较的数据31625,第一次循环之后的结果13625,啊,在剩下的这波数据里边,再找出最小的值和最前面的元素交换位置。
09:05
交换一下位置,哎哟啊,这个好像有点问题,各位啊,有点问题,不是这样,不是这样。啊,是。哎呀,呃,总的循环次数是没问题的,各位啊,参与比较的数据是31625,第一次循环之后的结果是幺三。嗯,幺三是对了,三和一换了位置,参与比较的数据是36253625,第二次循环之后的结果是。变成这样了,各位啊。结果错了。就是没有一直交换位置,交换位置啊,交换位置,交换位置的交换位置,第二次循环,你看第二次循环找出二吧。是不是这这是三啊,这是二。啊2635啊对对对对,宇阳说的对啊。
10:03
哎,刚才要表示这个意思在这,呃,没没换啊,交换位置就还是那句话,呃,就是循环一次,然后找出参加比较的这堆数据中最小的,你看循环一次是不是,哎,然后找出参加比较的这堆数据里边最小的那个东西,然后拿着这个最小的值和最前的数据交换位置,我这说着说着交换位置没交换啊。为交换,交换一下交换位置啊,得需要交换位置,所以这个一呢和三交换的位置就变成这样了,3625呢,这交换位置就是二和三交换位置那变成什么呀?2635啊,那现在比较是635各位啊,是635635啊,因为二不用比了,那635,那么635这块的话,那咱们应该怎么做呀,那就是找出三是最小的呗,三和前面交换位置365呗。对吧,哎,还是363和六交换位置啊,365。那么365再往后就是六五呗,是吧,哎,六五这块呢,再进行第四次的循环,结果就是五和六了啊。就总之你你你记住这个选择排序的一个核心算法,就是找出参加比较的这堆数据里边最小的那个数据,然后拿着这个数据和最前面这个数据交换位置,交换完位置位置之后,剩下的数据里边再去找这个最小的,找出最小之后再拿着这个和这个参加比较的这个这个这个最左边数据交换位置啊各位你现在千万要记住这二和三交换位置,二不是二和这个一交换位置啊,因为你第一次交换完之后呢,一已经出来最小的了,你剩下的是3625进行比较,你找出这个二最小的,然后和三交换位置,记住是二。
11:31
和三啊是二和三交换位置,然后再往下就是二出来之后,635635之后呢,拿这个三和最前面那个六交换位置啊,然后365365之后呢,6565之后呢,哎,我们就交换位置就完事了,那五条数据循环四次是不是,哎,所以这边。嗯,我们看一下啊,31625是吧,我们给一个。Int类型的AR316253。1625啊31625看一看啊,各位看看数据啊,加个空格美观一下,那么接下来我们要选择排序,嗯,五条数据循环四次。
12:11
就是外层循环循环四次啊,是外层循环四次就行了,因为你参加五次比,呃四次比较嘛,对不对?哎,那应该是什么呀?因特类型I等于几啊0I小于什么呀?哎,我们ar.les是不是,哎,你看ar.les是什么呀?是不是五啊,那这样是不是循环五次啊,那循环五次不对,应该循环四次啊,所以应该是AR点什么呀?哎,Les减一。减一啊,然后I干什么呀,加加,那么这个时候的I的值。I的值啊,我们输出一下,它应该是01234吧。0123啊,0123错了循环四次嘛,0123I的值是0123啊。来。I的值是0123。
13:04
那么这个你能够循环四次就行了,你看这不一次嘛,两次嘛,三次嘛,四次嘛,我们刚才在这分析不也是吗?第一次结果是这样的,第二次结果是这样的,第三次的结果是这样的,对吧?啊,第四次的结果是这样的吗?对不对,好,那么现在第一次的时候,第一个元素的下标是几啊。就这堆数据里边,第一次比较的是第一个元素的下边是几。啊,各位注意听啊,一会儿你就听不懂了。这一堆参与比较数据的第一个元素的下标是几?这一堆听啊,这一堆,这一堆参加比较的数据中,最左边的元素下标是几呀零。那我问大家问题。如果你一已经挑出来了,剩下的3625在后边,那我问你这一堆参加比较的数据中,最左边的元素下边是几啊?
14:07
还是零啊一吧,因为三前面有一个一了,一的下边是零,你三这个位置是不是应该下边是一啊。这一堆参加比较的数据中,最左边的元素是一吧。最左边元素下标是不是一。各位。3625当中这个二找出来二是不是放到最前面了,其实这个并没有在最前面,这个二前面还有个一,你知道吗。我一直在说是找出参加比较的这堆数据里面最小的和最前面的数据进行交换位置,交换完是它,但是再往下比的时候,和依就没关系了,是3625,而你三的起点是在下边什么呀?一的位置上,3625拿着这个二和实验和三交换位置,而不是拿着二和一交换位置,所以你这个二呢?哎,应该是和什么呀,下边为一的这个位置交换位置,交换完位置之后呢?同样这个位置呢?哎,这一堆参加比较的数据,数据中最左边原子的下边是几啊二啊。
15:19
六的前面有个一和二,你知道吧。前面是不是已经有个一和二了,你看前面有个一二,只不过一和二怎么着不需要再参加比较了,所以我们是不是剩下的62635这堆数据里边找出最小的这个值三和最左边这个六交换位置,对吧?注意最左边是指的是这堆剩下的数据里边最左边的,而你这个最左边的下边你要知道是二啊。对吧,那接下来一这个类推的话,大家想一想是不是在这一块,哎,这一堆参加比较的数据中,最左边的元素的下标是几啊,是三八好,各位是不是出现0123了。好,各位看好了运行。
16:00
这个结果是啥?I正好是啥各位。这个正好是啥告诉我。0123这个I是不是正好是你每一次参加比较的这堆数据里边最左边那个元素的价标。哎,哎呀,同学们呐,我想问的是这个I是啥呀?哎,是什么呀?就是规律,你不太好找,I是什么,I正好是。参加比较的这堆数据中啊,哎,正好是参加比较的这一堆数据中。最。左边那个元素的下标。第一次比较的时候应该是。
17:01
零这个位置。是吧,等你把一拿过来之后。这个就变成三了。那么剩下这个一就不用不用比了,是不是就再往下for循环I加加,再跳跳的时候,是不是I就变成一了。I变成之后,是不是就从这开始作为起点?是不是从这作为起点呀?几点往后吧。是不是I的最大值是几啊三。0123。是吧?因为你最后比到两个数据的时候,就没就比一次就完事了。对不对。你好好想想,思考一下啊,小窍门,在什么地方选择排序五条数据,循环四次。I等于零,I小于数组点N减一,I加,加。啊,0123I正好是参加比较的这堆数据中最最左边那个元素的下标,那么里边这个循环怎么办各位。
18:10
循环多少次?等于什么?I已经是什么了,各位,这一堆数据里边最左边那个吧,或者是剩下这堆里边最左边那个吧。哎,那左边这个不用比了吧。交换完位置的时候,左边是不是都都就不用比了,是不是比右边的呀。那你比右边I是不是起点呀。I是不是应该是起点呀,那I是起点的话,那个J是不是应该是I加一啊。然后这是不是小于a.Les啊,这下加吧。好,大家看看这个能不能理解。嗯。二加一。
19:03
我们输出这个I的值。在这儿,I的值永远都是什么?0123。对吧,当I等于零的时候。里边的这个G是多少?我们可以加一个箭头啊,看看这个J。好,大家看这是零,然后是1234。对吧,诶这个零是谁啊,是I呀。那这的值恰好就是什么呀,1234啊,因为这从A加一开始啊,G加加。是不是,那紧接着我问你,For循环往下再跳一次的时候,I加加是不是由原先那个零变成了一?
20:01
那如果你这个变成一的话,是不是就是1234啊。是不是这几个元素进行比较啊。对吧,好,那你I加加之后就变成二了,那是不是剩下里边是不是就是。三四啊。对吧,那如果你的I再加加I变成三的话,你这个上来就是四啊。对吧,所以这个是不是第一次的一个筛查,这个应该是第二次的筛查,这个应该是什么呀,第三次的筛查,这是第四次的筛查。是不是?所以巧妙之处在于这个I的值恰好是你参加比较的这堆数据里边永远都是最左边这个元素的下标,你剩下就算是四个元素了,你这四个元素在比的时候,最左边这个元素的下标,这个IC呢,代表的就是它。而你现在这个G呢,是A加一,A加一就相当于假如说剩下你这四个元素,我现在已经知道这个位置了,那我是不是应该拿着这个位置和你进行比。
21:00
对吧,哎,那么。我们怎么找最小的,各位,就一堆数据里边,我们怎么找最小的,我们先先回来这各位啊,先回回来就一堆数据,你有没有什么办法,怎么找最小的。关键啊,关键点来了,关键点是什么呢?选择排序中的关键在于。你怎么找出一堆数据中最小的?你怎么找出一堆数据中最小的?各位怎么找?我们可不可以认为第一个是最小的?可以吗?然后拿着后边人的笔行吗?如果比它小的话。我们就把小的改,改成这个当前这个小的就理解我说的意思吗。便利比较。来我说一下啊,选择排序的关键在于你怎么找出一堆数据中最小的。
22:01
什么意思?31625假设谁第一个。三是最小的。就有有这个假设呀,对吧,三和一比较发现什么一更小,所以此时最小的是一。哎,你理解我说的意思吗?或者或者换个位置,32615对吧?假设三是最小的,那么三和谁啊,二进行比较行吧,三和二进行比较,发现二更小,所以此时最小的是二。对吧,继续拿着二往下比对。对吧,哎,继续拿着二往下比,对呀,二小二和六比较,二和六比较。
23:00
对吧,你看,所以最小的是二啊,继续拿着二往下比较,二和六进行比较,二是最小的,二仍然是最小的,继续拿着谁呀,二往下什么往下比对,二和谁呀,一进行比对,和一比对,明白吧,哎,发现什么呀,发现一更小啊,所以此时最小的是谁啊,是一。继续拿着一是吧,往下比对对吧,哎,一和五比对发现一还是小的,所以一就是最小的。拿着一和最左边的三交换位置。明白吗?交换完位置之后,它剩下的这个元素,我问大家一个问题,剩下的是不是这个位置就是三,这个位置是一,而一我们就不用参加比较了,对吧?来,那么此时我们是不是可以假设又来了第一个什么?
24:15
几二是最小的可以吗?可以吗?二和六再比,比完之后二是小的,然后二和三再比,发现哎二还是小的,二再和五比,发现二还是小的,所以二是最小的,不需要交换位置,因为二正好是在哪啊诶第一个位置上。那么剩下的635呢?对吧?剩下假如说你又来一个635,你这块要比的话,应该是假设六是最小的吧?对,假设什么呀?哎,六是最小的对不对?哎,六和三进行比对,发现三怎么着啊?哎,六和三比对发现三更小,所以此时更小的是,此时最小的是三是吧?然后三和五进行比较,发现三是小的,所以我们三确实是这堆数据里边最小的,拿着三呢和最前面的元素来交换位置。
25:13
交换位置啊,交换位置,所以这块有一个什么,有个假设,就你假设什么呢?是这堆数据里边最左边数据是最小的,那我问大家是不是我们这个I可以假设为是最小的元素的下标。好好理解一下啊,这个I是不是正好是0123,然后每一次在循环的时候,我们可以都可以认为这个I是个起点呀,I是个起点呀,各位对吧?A是什么?A是一个参与比较的这堆数据中的起点下标啊,那我能不能假设假设起点哎,下标位置上的下标位置上的元素是最小的,那么我们是不是可以这样做。
26:03
这这个不是那个数据啊,这是下标,这是下标,假设这个I下标是最小的。哎,然后你这个循环,这应该怎么做呀。你在这循环里边干什么,和这个小的比是吗?因为这是不是A加一吗?一是这加加往下下跌就往下就就它这就往下走了呀,你看这是吧,哎,假设它是最小的,它和它比比完之后有没有更小的,有更小的再改一下对吧来有没有更小的呢?你你你得符合条件呀,对吧,哎谁呀,如果这个A数组J怎么着啊,哎,小于谁呢?哎小于a min。是不是有比这个更小的?假设这个I。是最小的。各位啊,付给了命。Ain现在是不是就是一个最小值,如果有一个值比这个最小值还要小的话,那现在的最小值是不是这。
27:11
最小值的元素下标是G。嗯。你这个能看懂吗。就默认上来第一个元素是最小的。循环过程当中啊,这个G是A加一嘛,往后一直G加加嘛,那你加加过程当中,你拿着这个arg下边的元素吗。去和你这个,你认为这个是最小的吗?你如果还是小于这个最小的话,那最小的是不是应该是这样。你好好想想,比这个最小的还要小,那证明现在最小的已经不是I了,哎呀,这个逻辑啊。太牛了,逻辑来看看啊,默认I下标是最小的,循环过程当中,如果说比这个最小的还要小的话,那最小的就变成这了。
28:04
能能能能看懂吗?这个循环过程中一直循环循环循环,最后必然会找出最小的加标。必然会找出最小的下标吧?好,那我问大家什么时候需要交换位置,什么时候不需要交换位置。什么时候需要交换位置。各位。就是说大家想一想,这个循环过程当中这样做,一直这加加,这样循环下去,一直找,一直找,一直找一直找,如果这个G比这个小的还要小的话,那最小的应该是这个G,那这个循环找一圈是不是可以找出最小的值?最小元素的下边是不是可以找到,什么时候需要交换位置,各位。没人回应了。这个确实算法很难啊,12345,好,我问大家,假定一是最小的。假定一是最小的。啥玩意不是啊,假定一是最小的,各位,那转一圈之后发现一还是最小的,是不是就不需要交换位置?
29:06
我们来个问题,注意听课啊,假设一是最小的,假设一是最小的,结果一确实是最小的,就不需要交换位置,对吗?你假设这个I是最小的对吗?等你循环完一圈之后,如果这个M和I不相等。是不是这说明有比这更小的,如果M和I是相等的,Min和这个I是相等的,那我问大家是不是你最初的这个猜测就是对的,你猜测这个位置是最小的,结果走了一圈之后,这个带这个条件一次都没有成立,这个条件一次都没有成立的话,这个一次都不会执行,这个一次都不会执行,面就不会重新赋值,面部重新赋值,它的值还是I。好好想想。你好,想如果你假设一是最小的,经过循环一圈之后发现一还是最小的,是不是就不需要交换位置?只有什么情况下才需要交换位置呢?只有当你这个I的值和M不相同的时候。
30:10
明白吧,就你循环结束了,只有I和M,就是当吧,当I和M相等时。就你这个I和你循环一圈这个面啊相等时,表示最初猜测是对的。对吧,那当I和面不相等时。表示最初猜测是错的。有比这个元素更小的元素。需要拿着这个更小的元素和最左边的元素交换位置。
31:00
各位啊。需要拿着这个更小的元素和最左边元素交换位置。If min不等于I,当你这个地方的循环结束,当你的M和I不相等的时候,表示有更小的值,对吧?表示存在什么呀,更小的数据,那么当你存在更小的数据之后,你现在最小的不就是面吗?你最小的就是它呀,这个是最小的呀,这是最小的数据呀,那最前面的数据是不是就是ari,这个是不是就是最前面的数据?你这两个数据交换位置和我们上一个例子就一样了。这就是最小的呀。这是下标啊。最小的数据是它。你最前面的数据不是ari吗?你这个I的起I不就是它代表你这参加比较的这堆数据流最左边那个元素的下标吗?啊,这个是不就是最前面那个元素,所以这块我们交换的话,性ta是不是好了,那么接下来我们再往下啊,再往下这块呢,是tap等于什么呀,我们把这个a meanin呢,先放到我们的什么哎,Temp当中,然后a mean怎么着啊,哎,我们再把这个ari呢付给他,然后接下来我们再把。
32:26
这个ari呢,哎,等于temp。这样的话就交换位置了,把ariin呢,先放到临时的变量当中,然后把ari里边只是放到arin当中,然后再把这个temp,就是最初这个temp里边保存这个a rin这个数据怎么着啊,再付给ari,这样的话诶就完成了数据交换啊交换那这个其实就是选择排许可。选择排序啊,这是选择排序,排序之后便利for循环,I等于零,I仍然小于数组,点Les I加加,输出我们AR这个数组下标为I的元素。
33:06
来那这个排序啊,就是选择排序各位。12356。看见了吗?这个是不是有点难度啊。你得理解它里边的原理啊,原理31625,它的比较原理是找出这波最小的。就关键在于认为这个I起点的下边是最小的位置。然后循环过程当中,如果有比这个更小的怎么着?才小的。比这个元素。对吧,我们这个min就附上min就有更小的了嘛,是不是,哎,如果min呢,不等于I。你等于I的话,就变成猜测是对的呀,如果你不等于的话,就代表你最初的猜测是错的,你要交换位置。
34:03
啊,交换位置。难度有点大是吧。有点难受。啊。下不等于。都交换呀。都交换吗,各位?你都交换干嘛呀?都交换位置不行,你你得按照逻辑来啊。那不相等的时候再交换呗,对吧,你相等的时候你交换啥呀,还交换啥呀,都是第一个位置交换啥呀,没必要。
35:12
你交换也没事儿,但是你没必要啊。各位,我问一下选择排序的核心是啥?到底冒泡排序的核心是啥?选择排序的核心是什么?经过我的讲解,你你能不能理解这个东西呢?就是说冒泡的一个核心是啥,各位。这会儿咱们假如说让你冒泡三。1625你冒一个泡,你你怎么冒的呀?是俩俩比对哪个左边大,交换一下位置,然后拿着后就是这个再和他比交换位置,然后拿着这个大的话,再和右边交换位置,就是每一次往外走的都是大的,都是大的,都是大的,都是大的,最后只能说出来最大的。
36:01
是吧,哎,那那那选择呢,选择一眼望去,看到一是最小的,我们把一标出来,然后最左边元素交换位置,然后剩下的这波元素里边也有最小的,把这波最小的里边和最主元素交换位置。然后在剩下的这波元素里边,再找那个最小的和最左边的交换位置。就是说这个冒泡排序啊和这个。选择排序呢,它俩注意啊,是选择排序的交换更有意义,它的交换位置更有义啊,冒泡排序呢,你的交换位置有点浪费。啊,有点浪费。那么这块呢,咱们来看一下它的比较次数,各位啊,Int类型count等于零,然后接下来在这里循环的时候呢,我们让它countt干啥?加加,然后接下来呢,我们结束之后,我们把这count值输出。这是比较的次数。
37:02
好,走。是吧,比较次数变少了,各位。啊,比较次数变少了。啊,比较次数变少了,而且它交换位置位置的次数也变少了。就相对于冒泡排序算法来说,比较的次数减少了啊。另外交换位置的次数也。哎,我们这个数据不一样是吧,各位我们看这个次数啊,它比了多少次,按说这个比较次数应该不能变少。数据不一样,在这光说呢啊。我们应该比较它的交换次数啊,交换次数各位来看一下。
38:03
交换次数比交换次数,看次数是多少次。对,元素个数不一样啊。光在那儿,叭叭叭叭一顿说呢,在这来走。呃,还是21次啊,次数没变,次数没变啊各位。就是冒泡排序和选择排序,实际上啊,比较的次数没变啊,交换。位置的次数减少了。比较次数啊,是还是21次啊,还是21次,那这个。交换位置,我们可以统计一下。这是不是一个交换位置啊。交换位置怎么统计啊?呃,COUNT2吧,假如说这是冒泡啊,等于几啊零行吧,然后COUNT2这块怎么着呢,就是如果这个条件成立,是不是交换位置嘛,交换位置COUNT2加加。
39:09
交换位置的次数,我们可以看一下交换位置的次数是多少次。来执行一下。冒泡的啊,冒泡的这个交换次数是13次。是吧,然后呢,接下来我们在这个选择排序里边,如果这个条件成立的话,我们我们再交换交换位置,那么在这儿呢,我也给一个COUNT2等于零,然后接下来呢,我交换一次位置,我COUNT2干啥呀?加加比较次数,交换次数。加上count走。嗯,比较次数你看交换次数只有五次吧,比较次数是不是21次啊,是不是只需要交换五次就行了。
40:05
因为他。它的交换次数是五次,各位啊,它的每一次交换会很有价值啊,很有价值。所以这就是这个选择排序,它比这个冒泡排序的这个效率问题啊,实际上它比较次数没没没没变啊,这个比较次数还是21次。还是二意思,还是这么多数据进行比较都得比啊,只不过就是说他要选出选出最小的放到最前边交换一下对吧?哎,就采用一个办法,就是临时先给个变量,设定它是最小的。然后呢,假设I是最小的,然后接下来循环过程当中,如果说我们。有比它更小的呀,你看AR这比它更小啊,那这最小的就变成这了呀。所以这就付给min嘛。对不对,哎,是这样的啊。
我来说两句