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个值,所以 我们并没有失去它。 所以,这对继续 下一次迭代。 我们将开始寻找第二 最小值,并插入到 第二个位置。 在第三次迭代,我们会寻找 第三最小值和插入 该进入第三位置,所以 直到我们有一个排序的数组。 我的名字是罗布,这 是选择排序。