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