00:00
接着的话呢,我们再来体会一下这个方法啊,昨天呢,咱们讲到这个练习的时候啊,下面呢,我看有的同学可能还是稍微有点不熟,就是咱们呢,关于这个练习四呢,是写了两个啊,第一个的话呢,就是写的这个里边呢,咱们把他呢给这个,呃,问题一是吧,要查找一下三年级的学生信息啊,冒泡排序,包括便利,咱们是直接写到这个main方法当中了,实际上你会发现这每一个操作呢,都是一个具体的功能,既然是功能,咱们呢就想把它封装成一个方法啊,那咱们呢,就下一步就是造了几个方法。哎,这呢就提供了这样几个方法,提供了方法以后,我们呢,在这里边呢,就可以直接呢这样去调用了,那么这样写的一个好处是什么呀,代码看的是不是就更整洁一些啊啊原来的话呢,你要是在这个没方法里边写了这个,比如说啊,大家以后开发写了2000行代码都怼到一起了。你要改的话呢,那就一点点去调,而且前面调了可能会影响后边,那就得一点点都得去看,那现在的话呢,我们这个没方法呢,可能就只有这个20条20行代码,然后我把每一个具体的功能呢,都封装在这个方法当中,然后呢,这个方法呢,你下边一个一个的这样去造,哎,我这呢只是调用一下,哎哪个方法功能变了,你这块去改一下它就行,其他的呢,其实都不用动了。
01:21
因为这都是一个独立的一个功能啊,这是其一,整体这个结构呢,看着就更合理一点啊,同时的话还有什么好处。是不是这个复用性也好一点啊,原来的你这个代码是这样,你写完以后,如果又写到一个里边有些功能一样的,你是不是得再写一遍,现在的呢?对现在你要又需要排序了,我是不是直接就在这掉一下就完了。这也是咱们面向对象的一个目的呢,咱们那个说人把大象撞冰箱,你你拗了一个人做一个功能,然后呢,还有同样的事儿,是不是直接再扭个对箱还掉那个方法就行了,对啊,就是咱们呢,可以提高这个方法的一个复用性啊,是这样的一个情况啊好,这呢就是咱们目前的这种做法,这个呢思路大家要清楚,以后的话呢,诶咱们就可以把咱们之前讲这个数组的时候,数组呢,咱们讲了这个数组的一些常用的算法了,求最大最小平均总和,哎还包括这个数组的复制,反转、查找,像这些呢,都是一个具体的功能,咱们呢,就可以考虑把这些功能呢,是不是封装到咱们自定义的一个类中啊,哎,比如说我呢,现在也造一个类,哎,我叫其实相当于咱们自己定义了个叫瑞一样啊,哎,那大家呢,以后写代码要注意一个问题,就是咱们自己要是写这个类名的时候啊。
02:41
你别跟这个呃,这个这个扎va提供好的这个类库重名哈,也就说什么呢,你自己别造一个类叫盾啊,你要说能吧,肯定可以,这没毛病啊,我点下finish,这不就造好了吗?但是你也叫string,系统里边也提供了一个string,你在用的时候呢,这就有时候会麻烦,就是你得指明你用的是哪一个string啊,所以大家以后呢,呃,写这个类名的时候要注意,就别跟咱们常用的这些API重名了啊哎,我这呢就改个名啊,这个叫rename。
03:16
哎,那我这呢,我我就不叫叫aris了啊,我叫AU,哎,叫数组的一个工具类。改个名还挺费劲的,那么我们现在呢,实际上就可以自定义一个数组的工具类。相当于就是对昨天大家这个练习四的一个在强化啊,那这个工具类里边咱们就可以写很多的方法,比如说咱们现在就针对于这个in的型的这个数组,我们可以去啊角求数组的最大值啊,这个类似的这好几个就出来了最小值。这个对平均数,或者说先是这个总和,呃这呃平均值,哎这个呢,都是针对于这个数值类型的啊,那除了这个之外,我们说还可以啊,叫反转数组啊,这是一个,然后呢,复制数组,哎这个数组排序,甚至呢,我们去遍历数组诶等等这样的操作呢,呃,还有这个叫这个查找是吧,查找指定元素诶。
04:40
指定元素这样的功能呢,咱们都可以把它封装到一个一个的方法当中,那行了,咱们来体会一下这个方法,这个声明再强调强化一下这个过程啊,我们想求数组的最大值,目前呢,咱们权限呢,大家都先写成public,然后考虑后边这个要不要有返回值,肯定要啊,我第一下你得告诉我最大值是多少吧啊,得返回啊,Int,咱们这个叫get max,咱们目前呢,先只针对这个int型的数度来考虑啊,这就是它的一个声明,呃,为了保证它不报错,我先暂时写个零啊,下一个求最小,类似对类似的这种啊,Ctrl shift f一下,这个呢叫get m。
05:29
最小求总和哈,是不是也得要啊哎,Get一个萨哎,这是in型的哎哎呀啊,这个暂时的,我也先return一个零啊哎,求平均数诶平均数呢,我们让他也返回int吧,Get average哎,这个注意哈,咱们是不是都写行参了呀,这个行参要加知道吧,你求最大最小平均总和,你得告诉我想求谁的最大最小平均总和是吧?你得给我传一个参数啊反转数组,嗯,就是把你传进来的这个速度给反转了,要返回值吗?是不是就不用了,哎,就不用了,你反转完以后,你传进来那个数组自然而然就变了,就不用返回了啊reverse,反转的就是我们行参的这个数组,复制一个数组要。
06:29
范围值吗?要不要得要啊,你你把你要复制的那个速度给他从行三传进去了,你是不是得给我返回一个复制好的这个呀,对那这个怎么写。这样写呗,哎,有的人没见过,没见过不等于说就不能啊,这我先不让他报错,先写个什么。
07:00
速度类型属于引用类型,先写个闹呗,你能先写RETURN0吗?不能,这不就报错了,不是同个类型了啊,引用类型的潜水同个闹,数字排序public要发位置吗?不要跟那个反转类似,呃,这个呢,我们是一个salt。哎,这就行啊,便利便利呢,就是在里边你c out输出就完了呗。这样查找指定元素,通常呢,我们一般呢都会,呃,你告诉我找着了,你告诉我这个地址,呃,索引地址你要没找着,你可以返回一个复数,所以咱们呢,不管你是什么类型的这个数组啊,咱们都是返回int型啊,叫get指定的呃,Value的index啊,这个我们通常呢叫get index吧,获取一下这个索引地址啊,这个参数大家看啊,我想从这个数组当中找这个数。
08:06
或者我这写成det吧,Destination就是目目的这个值啊,所以这呢有两个参数,嗯,从这个数组当中,你想找谁啊,所以得有俩暂时呢,我先写return一个零,好这呢就是咱们把这个,呃,前面讲的关于数组的这个呃一些常用的,常用的一些算法操作呢,原来呢,咱们都写到一起了,那现在呢,咱们也把它抽离出来,造成一个一个的方法,这个你要是造好以后,那就意味着我们自己呢,诶可以写一个测试。或者array啊,U的一个test,那在这里边,哎,我们呢先来一个main方法啊,哎这呢我就可以先去造一个叫ara u的对象。诶,造完这个对象以后,我们就可以去调咱们刚才里边写的这样的一些方法了。
09:02
啊,比如说咱们先提供一个int型的一个呃数组。这呢,我们就哎随便的给这样的几个数值啊。好,这呢我就写好了,写好以后呢,咱们诶就可以去调用这个叫get一个max,哎,我把这个上面这个数度呢塞进去,它就能够给我返回一下这个最大值是多少,哎,我c out了一下说最大值为,哎,加上我们这个max,这就妥了。啊,那现在的话呢,咱们这个方法实体还没写啊,我这调的时候呢,是不管你传传的啥,我是不是都返回零了是吧,那我要执行,那那就是零。啊就这种啊,那我们下边需要做的事呢,其实就是把他那给填充一下是吧?啊就这个问题啊好这个填充这个事儿的话呢,其实大家只需要呢,把我们讲的这个代码呢,你给它整过来,其实就完了吧。
10:08
嗯,求最大值是不是整过来就可以了,来,那咱们下边做一下这个事儿啊,大家下来的话呢,你也可以自己呢做这样的工作,你自己呢,通过造这几个方法,你去体会一下这个返回值和这个行参的问题啊啊这呢咱们快速的粘一下,嗯,求最在哪呢?在这呢啊求最大这么着CTRLC。啊,CTRLV接着呢,Return一个。嗯,它诶这最大版哦,粘到粘错位置啊,粘到的这个位置错了,那这CTRLV,诶这呢CTRLC,这就是我们要返回的这个最大值,好接着最小的。最小值在这儿,CTRLC。
11:02
哎,CTRLV把这个CTRLC一下,这就是我们的最小值。好搞定啊,求总和。总和这样,CTRLCCTRLV,把我们这个sum呢返回。哎,搞定求平均,平均的话呢,在我们这里边呢,直接呢,让这个总和去求除的这个lengths哈,那这呢就意味着呢,对我直接是不是方法里边调那个方法就行,我调这个方法,我调这个方法的时候呢,诶也得你给我传一个参数,就是你想求谁的平均,你把你这个呢,是不是也告诉我,我先帮你把你传进来的这个数组的总和先求出来,接着呢,我再除以一下你这个数组的length。哎,这就搞定了方法中调方法。好接着反转一个数组反转反转呢,这写了两种方式啊,把这个操作CTRLC。
12:03
反转CTRLV一下打开。嗯,就把你传进来这个数组,我们这样呢,给他去交换,呃,咱们当时交换的是string了,所以我这儿呢,改一下这个类型。哎,保存哎这呢就是一个反转操作,反转完以后呢,本身这个数组就变了啊,也用不着返回搞定,下边复制一个数组。复制复制在上面。啊,这是这样,CTRLCCTRLV这呢,我们改成类型啊,这个叫它int型。哎,接着,哎,Return,别着了。来,就听一下我们这个are。诶,它呢是一个in字形数组啊,这就是复制好数组排序,数组排序还是找呃bubble吧,咱们拿咱们这个自己写的这个冒泡啊嗯,这呢就是我们这个冒泡排序啊到这CTRLC。
13:02
CTRLV一下,Ctrl shift f,嗯,这呢我们进行一个排序,排序完以后呢,也不用返回了,本身呢,就把我们这个数组本身就排好序了啊,哎,就这样就OK了,下面便历电历比较简单。啊,遍历这个就直接CTRLC啊,CTRLV一下,Ctrl shift的F啊这种写法啊,嗯,这个呢,咱们没有给他整的,说那么那么完美了啊,大家你下来呢,你也可以考虑这个便利的时候呢,也写成这种,就是一输出的时候呢,比如说你这是123,然后呢这样给它封一下,下来呢你可以考虑考虑,哎,我想写成这样,怎么去写啊,啊这呢我就不写了,将来你一上来呢,是不是先整个它,如果这个数组呢,就没有元素,那你就把输出一个,这样中号就可以了啊上来呢,就是先s out一下这个中号别换行,然后写一个写一个写一个,没写一个的话呢,你可以逗号一下,但是最后一个不要有逗号,你想想这个逻辑你怎么去控制啊,其实挺有意思的啊,你可以写一写,锻炼一下你这个逻辑这块怎么去输出啊,那遍历数组完了以后,下边这个就是查找了,对查找的话呢,咱们这个你要想是用二分法,是不是先得保证它的有序啊,对,咱这假设没有序,没序的话咱就。
14:20
那个线性吧。线性查找那就这个了啊,哎,这是咱们原来写的这个线性查找这个代码啊,CTRLC过来呢,其实做一些调整的。CTRLV一下啊,Ctrl shiftll f首先呢,是这个位置,你想找谁,这个就用不着说了,我就想找他。哎,就要找他啊,那这块也都得跟也都得改,那其实这个波尔类型变量呢,也都用不着要了啊,你看为啥咱们写着看啊,我呢从头到尾变利一下,然后的话呢,我们看一下你这个desk,它呢咱们是一个int型的啊,所以这块呢就用等等了,只有是其他类型的,咱们再考虑用ES啊,哎,当我们这个death的呢,等等于你这里边的某个元素的时候,我就说找到了,像这些呢,就用不着这么复杂了,直接return一下,哎。
15:10
找到了,那你就返回你这个索引地址呗,嗯,那后边这个呢,也用不着这么复杂了,只要呢是你没有进去,没有return的能走到这的,是不是一定就没找到。我就返回负一就完了。哎,就是这呢,我们叫返回一个负数,哎表示没有找到,哎就这个意思,你写负二也可以,哎,习惯上咱们写负一了,就啊,因为这个角标呢,是从零开始的,零左边那个就是负一。这这样写是不是就比较简化了是吧?啊,因为return呢,我们说还有一个结束方法的作用啊,它相当于呢,就替代了我们那个break一样啊,同时顺便呢,还把我们的an返回了啊,凡是到这儿了,那都是没有执行过这个if的啊行,那这呢,我们把这个整体就写完了,写完以后的话呢,大家这个这个你回过来。
16:01
咱们在这块测试,刚才呢这个max你再去执行,哎,这个最大值就出来了,哎,那最小平均总和我就不一个一个去测了啊,咱们测几个关联关键的,比如这个u two点,我们呢先给它去sort一下。扔进去这叫排序,排序完以后呢,我们再去遍历一下,我就U咱们还写好print了,哎,我们打印,嗯,这个之前的话呢,在上边啊,排序之前我们也先打印一下。哎,U点二我们sort一下,哎,然后排序后。哎,咱们呢,再打印一下来。嗯,这个好像没有换行了都。哎,这个换一下行。
17:00
诶,排序前写错位置了,这个好像用不着它是吧?嗯,排序前诶啊这是写成salt了print是吧?排序前呢,输出一下,然后排序了以后呢,再输出一下这个位置,得得这个。我看我这个printer后边有换行,这没有写换行是吧,我在这加一个换行吧。嗯,CTRLS保存啊,Alt左回来。哎,这排序之前,这是咱们本身的这个数组,哎排序以后,哎,我们看一下这个呢,就是排好顺序了,哎是这种情况啊,然后咱们再做一个查找吧。哎,找一个这个做一个这个查找,哎,我们使用这个YouTube,咱们呢,现在去想查找,我们要get这个具体的index,从这个数组当中,我们想找一下这个五吧,找这个五,注意这时候呢,我们找的话呢,是你已经排好序了啊,所以咱们呢,就先把这块呢先注释一下。
18:13
嗯,还拿咱们最初的这个没有排序的这个来说,那我们这里边有两个,那咱们现在用的叫线性查找啊,那其实找的是不是就是首次出现的位置了,对,然后我们这呢,CTRL1一下,哎,返回一下这个index,这个你可以判断说,如果这个index呢,是大是大于等于零的,哎,我们这呢,就输出一下说找到了。哎,找到了,然后索引地址为,诶这呢,我们加上一个index这样啊,然后else,哎,一旦呢,小于零就没找到。好保存,就这样就行来执行。哎,这找到了,所以是三啊0123找到了啊,然后现在改一下改成负五。
19:04
哎,保存。没有。没找到。这样就行了,好,那其他的这些功能呢,我就不一个一个去去测了啊,相当于呢,咱们自己呢,也能够去定一个工具类了,就是把前面那功能呢都拿过来,我们这儿呢,就体现了关于这个方法啊,这样的一个使用,那那一旦定义好以后呢,这个里边的方法,这个你是可以服用的啊,就比较方便了啊行这呢是咱们说的这样一个工具类的一个封装。啊,行。
我来说两句