>> ROB BOWDEN：嗨，我是罗布。
我们如何使用二进制搜索？
让我们来了解一下。
所以，请注意，这个搜索我们将 实现递归。
您也可以实现二进制搜索 迭代，所以如果你这样做，
这是完美的罚款。
>> 现在，第一次，让我们记住了什么 参数搜索是命中注定的。
在这里，我们看到的int值，这是 认为是用户的价值
寻找。
我们看到的int值数组， 是的数组中，我们
寻找价值。
我们看到整数n，它是 我们的阵列的长度。
>> 现在，第一件事情第一。
我们检查是否n等于0，在 这种情况下，我们返回false。
这只是说，如果我们有一个空 数组，值显然不是在
空数组，所以我们可以返回false。
>> 现在，我们真正想要做的二进制 二进制搜索的搜索的一部分。
所以，我们要找出中间 这个数组的元素。
在这里，我们说中间等于n除 2，由于中间元件是
将要的长度 我们的数组除以2。
现在，我们要检查，看是否 中间元素等于我们的价值
寻找。
因此，如果中间值等于价值，我们 可以返回正确的，因为我们找到了
在我们的数组值。
>> 但是，如果这是不正确的，现在 我们需要做的递归
步骤二分查找的。
我们需要搜索无论对 数组或向左
中间的数组。
所以在这里，我们说，如果在中间值是 小于值，即表示值
大于中间 数组。
因此，值必须是的权 元素，我们只是看着。
>> 所以在这里，我们要 递归搜索。
我们将看看我们正在传递 此在第二。
但我们要搜索​​的 右边中间的元素。
而在其它情况下，这意味着 值小于的中间
数组，所以我们要 搜索到左侧。
现在，左将是 简单一点来看待。
所以，我们在这里看到，我们是递归 调用搜索，其中第一
论点是，再次，值 我们期待过。
第二个参数是要成为 数组，我们正在寻找过来。
和最后一个元素现在是中间。
记住最后一个参数是我们的诠释 N，所以这是我们的数组的长度。
>> 在递归调用搜索，我们 现在说的长度
数组是中间。
所以，如果我们的数组的大小为20，而我们的 搜索索引10，因为中间是
20除以2，这意味着我们 经过10作为新的
我们的长阵。
请记住，当你有一个数组 长度为10，则表示有效
元素在索引0到9。
因此，这正是我们想要 指定我们更新数组 - 左
从数组的中间元素。
>> 所以，向右看是 有点难度。
现在首先，让我们考虑长度 数组的权
中间元素。
所以，如果我们的数组是大小为n，则 新的数组将是大小为n减去
中间减1。
所以，让我们想到的n个减去中间。
>> 再次，如果该数组的大小分别为20和 我们除以2得到的中间，
所以中间是10，则n减去中间 是想给我们10，所以10
元素中的右侧。
但是，我们也有这样的减 1，因为我们不希望
包括中间的本身。
因此n减去中间减1为我们提供了 元素向右移动的总数目
在阵列中的中间索引。
>> 现在在这里，记得中间 参数是值数组。
所以在这里，我们传递的 更新后的值的数组。
这个值加上中间加1 其实是说递归调用
搜索，传递一个新的数组，其中 新的阵列开始在中间
再加上我们的原始值数组中的一个。
>> 对于另一种语法，现在 你已经开始看到指针，是
符号中间的值加1。
因此，抓住中间的地址 值加1的元素。
>> 现在，如果你不舒服 修改这样一个数组，你
也有采用这种实施 递归辅助函数，其中
该辅助函数取 更多的参数。
因此，而不是仅仅取的值， 数组，该数组的大小，
辅助功能可能需要更多的 参数，包括低指数
你会在意数组中 和你关心的上部指数
有关阵列。
>> 等跟踪的两个下部 指数和上索引，你不
需要不断修改 原始值的数组。
你可以继续 使用的值的数组。
但在这里，请注意我们并不需要一个帮手 功能只要我们
愿意修改原 值的数组。
我们愿意在传递 一个更新的值。
>> 现在，我们不能在二进制搜索 一个数组，它是未排序的。
所以，让我们得到这个整理出来。
现在，请注意排序是近两年 参数int值，这是
数组，我们正在整理，诠释n， 这是该阵列的长度，即
我们正在整理。
所以，在这里我们要实现 一个排序算法
这是二六，O n的平方。
你可以选择冒泡排序，选择 排序或插入排序，或
一些其他类型，我们还没有 看到在课堂上。
但在这里，我们要 使用选择排序。
>> 所以，我们要遍历 在整个阵列。
好了，在这里我们看到，我们正在迭代 从0到n减去1。
为什么不一路攀升到n？
那么，如果我们已经排序的第一 Ñ​​减去1个元素，则该
什么必须已经是非常的最后一个元素 在正确的地方，所以在分拣
整个阵列。
>> 现在，请记住如何选择 排序工作。
我们打​​算去了整个阵列 寻找最小值
数组和棍子 在开始。
然后我们会去在整个 阵列再看第二
最小的元素，和棍子 在所述第二位置
阵列，等等。
所以，这是什么，这是做什么。
>> 在这里，我们看到了我们 设置当前最低
值到第i个指数。
因此，在第一次迭代中，我们将 要考虑的最小值是
我们的数组的开始。
然后，我们要遍历 阵列，检查到的其余部分
看看是否有任何比小的元素 一，我们目前
考虑到最低限度。
>> 所以在这里，值Ĵ加上一个 - 那就是 低于我们目前
考虑到最低限度。
然后，我们要更新什么 我们认为是最低至
索引j加1。
所以，做整个数组， 而在此之后的for循环，最小
应的最小元素从 阵列中的第i个位置。
>> 一旦我们有了这个，我们可以交换 最小值到的第i个位置
在阵列中。
所以这只是一个标准的交换。
我们存储在一个临时的价值 - 阵列中的第i个值 -
放入数组中的第i个值的 属于有最小值，
然后再存回的地方 曾经是目前的最低值
阵列中的第i个值，所以 我们并没有失去它。
>> 所以，这对继续 下一次迭代。
我们将开始寻找第二 最小值，并插入到
第二个位置。
在第三次迭代，我们会寻找 第三最小值和插入
该进入第三位置，所以 直到我们有一个排序的数组。
我的名字是罗布，这 是选择排序。