>> 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個值，所以 我們並沒有失去它。
>> 所以，這對繼續 下一次迭代。
我們將開始尋找第二 最小值，並插入到
第二個位置。
在第三次迭代，我們會尋找 第三最小值和插入
該進入第三位置，所以 直到我們有一個排序的數組。
我的名字是羅布，這 是選擇排序。