00:05
请大家多关注我的主页,看更多的根源秋集视频,这节课讲用来会进行二分查找。用final research函数和bner research方函数。用b research函数直接查找出目标,找到索音,而b research方法函数需要自定义排序规则。By research方函数会更加灵活,它不仅可以查作出等于等于目标值。还可以查找出大于等于目标值和小于等于目标值的情况。现在对这两种方法写代码体验一下。现在一个切片。这个切片必须保证有序。
01:03
24446,这肯定是有序的。把A打印出来。然后我们又。第一种方法。Research。K负号等于3X点。打了一圈进来,然后插刀把四找出来。打IK。这个第一个返回就是返回的市区哈,这个是是存在的。这个是并列序号为二,然后OK,那肯定是找出来了。
02:02
To long go。我们可以看到返回的是二号处。然后我们再搜索一下三。这明显是不存在的,所以肯定是查找不到,但是这个序号。这个山。啊,这个序号到底是多少啊,我们不戴耳机。我们可以看到序号同样是二的。我再找一下我。01234。周五应该是六。应该是六的这个位置,所以序号应该是五。我们看一下。这也是符合预期的结果,这说明什么?
03:05
这说明已经隐含了大于等于了。当不存在的时候,反位置肯定是副词。你虽然没有找到我,但是能找到大于五的。所以大于五的序号。就就是没有这个位置012345。溜溜的圈就是我。隐含了大于大于等于五的去二。我们做一下便秘。衣服出。来个吗?目标是?
04:00
那等于刚才目标是有435。我目标是从零开始。拆给他。小于等于八。拆开它加加,这样我就把这个切片里面的范围都已经包含了。然后打印出来。是改成他给他。然后我把目标值也打印出来。三杠三。我们可以看到,当T为零的时候。就是是不存在的大于大于零的位置,就是一这个位置,所以需要是零。
05:05
一。那一明显是查找到了,所以需要需要四年对。你能找到三。不不能找到,但是能找到大于三的位置,那就是第一个次,第一个次呢去22。四。那肯定是序号为二的位置五找不到,找不到,只能那个序号是大于五的位置,就是六六的序号十五六能找到。七不,不能找到。大大于七的位置。明显在六之后了,六是六的位置是五,所以大于。大于六所,所以所以就是六了。
06:03
从这里我们可以看出。这个索引是不不可能为负数的。但是有可能为。尾这个切片那个长度,也就是说不在这个锁印之上。这个手印。一号。喂。零到N黑。注意是B区间。嗯,这个是b search,我们还可以用那个bary search放卡函数。
07:06
二。OK2。冒号等于。点。把A穿进来。也不放开。1T。然后返回车也是硬套。然后一一。大于T,那就返回。返回多少,返回1亿?F1小于T。
08:00
返回负一,这是正常的排序规则,最后相等的,所以就返回零了。然后我们我们判断这两种方法的返回值是不是相等的。EA等于等于I2。并且K等于等于等于OK2。照理来说应该应该是相等的。证券。然后再来一个。不等的手续错误。再加一个参数。
09:01
他对他。总的来说,应该都是正确的。我们可以看到。这符合预期的结果,也就是research和research放款这种方式。是,是由等价形式的。我们现在用半search实现大于等于。目标值。这种情况。它呢,都是实实现都是等于等于T的,现在要实现大于等于T的这种情况。我把这个复制下来。他跟他跟我设置成是。
10:02
当然,单于等于是。也就一大于T这种情况。也是能成功返回的。所以把E改成零。把,然后把I和K打印出来。并且加这个字肯定是存在的。我们可以看到四这序号为二。我把四改成三,改成三可以吗?既然是大于等于了,那三应该也是二和出。我们可以看,这正符合我们的需求。然后再来个五。
11:00
大于等于五,那那就是六这个位置,所以为。五处。这个大于等于。这种情况已经。已经实现了,然后我们再实现一个小于等于零。小于等于T。很遗憾的是。这个小于等于15万就直接来实现的。这个根本就实现不了。所以我们需要制定一个方法来实现。来一个放。小于小于等于T的这个这个函数。Bank。他一。
12:02
把速度闯进来。前面穿进来。然后再穿目标中的他给他。印发。最后返回的是有两个值。第一个字是虚号。这个是是否存在。嗯,求小于等于无,无法直接求出,我们可以先求大于大于T,这个就好办了。If d。OK,冒号等于只要用S点。The bank。
13:02
我把上面的代码复制下来。把五改成他。我们。所以我们只要大于他的太大。所以。所以这个才是正确的,然后其他的不管,然后负一。然后判断一下EOK。如果找到大于他的,我们还得判断一下。一爱。等于等于零,如果等于零了,咋办咋办?
14:06
PS。如,如果大于T的是零这个位置,那么小于等于T的就是零之前的位置,零之前就负一。这个复议,那我这里只能返回零了。然后找不到,所以最终最后是返回false,否则就返回I减一。然后醋。如果不存在的情况,怎么回事儿呢?不存在,分为两种情况。如果A等于等于等。诶。然后特二减一。然后醋。
15:02
Else。Returning。副词。我们那还有一个bug,并且。能。都大于零了。这样我们就把小于等于T派的这种方式求出来了。所以这这个代码需要改一下。然后改成GET1。A。把事传进来。运行一下。
16:03
我把上面的。覆盖成。看一下最终结果。我们可以看到四处01234。这个右边的是就是手印是属于返回处。呃,再来一个。来一个五。我们可以看到。小于小于等于五的,那肯定还是四这个位置,所以最后返回的还是四和处。我们可能政府我们的需求,然后带来一个那个100小于等于100。
17:05
这个可能是返回五的。如何处?再来一个负100。不一般可能就放了。因为不存在小于等于负100的。这两种方法讲解完毕。
我来说两句