


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android二分查找算法怎么用
本篇內(nèi)容主要講解“Android二分查找算法怎么用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓在下來帶大家學(xué)習(xí)“Android二分查找算法怎么用”吧!旋轉(zhuǎn)數(shù)組的最小數(shù)字題目:把一個(gè)數(shù)組最開始的若干個(gè)元素搬到數(shù)組的末尾,我們稱之為數(shù)組的旋轉(zhuǎn)。輸入一個(gè)遞增排序的數(shù)組的一個(gè)旋轉(zhuǎn),輸出旋轉(zhuǎn)數(shù)組的最小元素。例如數(shù)組{3,4,5,1,2}為{1,2,3,4,5}的一個(gè)旋轉(zhuǎn),該數(shù)組的最小值為1.實(shí)現(xiàn)數(shù)組的旋轉(zhuǎn)見左旋轉(zhuǎn)字符串。題目:把一個(gè)數(shù)組最開始的若干個(gè)元素搬到數(shù)組的末尾,我們稱之為數(shù)組的旋轉(zhuǎn)。輸入一個(gè)遞增排序的數(shù)組的一個(gè)旋轉(zhuǎn),輸出旋轉(zhuǎn)數(shù)組的最小元素。例如數(shù)組{3,4,5,1,2}為{1,2,3,4,5}的一個(gè)旋轉(zhuǎn),該數(shù)組的最小值為1.實(shí)現(xiàn)數(shù)組的旋轉(zhuǎn)見左旋轉(zhuǎn)字符串。解題思路和二分查找法一樣,用兩個(gè)指針分別指向數(shù)組的第一個(gè)元素和最后一個(gè)元素。我們注意到旋轉(zhuǎn)之后的數(shù)組實(shí)際上可以劃分為兩個(gè)排序的子數(shù)組,而且前面的子數(shù)組的元素都大于或者等于后面子數(shù)組的元素。我們還可以注意到最小的元素剛好是這兩個(gè)子數(shù)組的分界線。我們試著用二元查找法的思路在尋找這個(gè)最小的元素。首先我們用兩個(gè)指針,分別指向數(shù)組的第一個(gè)元素和最后一個(gè)元素。按照題目旋轉(zhuǎn)的規(guī)則,第一個(gè)元素應(yīng)該是大于或者等于最后一個(gè)元素的(這其實(shí)不完全對,還有特例。后面再討論特例)。接著我們得到處在數(shù)組中間的元素。如果該中間元素位于前面的遞增子數(shù)組,那么它應(yīng)該大于或者等于第一個(gè)指針指向的元素。此時(shí)數(shù)組中最小的元素應(yīng)該位于該中間元素的后面。我們可以把第一指針指向該中間元素,這樣可以縮小尋找的范圍。同樣,如果中間元素位于后面的遞增子數(shù)組,那么它應(yīng)該小于或者等于第二個(gè)指針指向的元素。此時(shí)該數(shù)組中最小的元素應(yīng)該位于該中間元素的前面。我們可以把第二個(gè)指針指向該中間元素,這樣同樣可以縮小尋找的范圍。我們接著再用更新之后的兩個(gè)指針,去得到和比較新的中間元素,循環(huán)下去。按照上述的思路,我們的第一個(gè)指針總是指向前面遞增數(shù)組的元素,而第二個(gè)指針總是指向后面遞增數(shù)組的元素。最后第一個(gè)指針將指向前面子數(shù)組的最后一個(gè)元素,而第二個(gè)指針會指向后面子數(shù)組的第一個(gè)元素。也就是它們最終會指向兩個(gè)相鄰的元素,而第二個(gè)指針指向的剛好是最小的元素。這就是循環(huán)結(jié)束的條件。核心實(shí)現(xiàn)代碼:https://upload-images.jianshu.io/upload_images/3117364-28a99958ebdd7ad1?imageMogr2/auto-orient/strip注意:當(dāng)兩個(gè)指針指向的數(shù)字及他們中間的數(shù)字三者相同的時(shí)候,我們無法判斷中間的數(shù)字是位于前面的字?jǐn)?shù)組還是后面的子數(shù)組中,也就無法移動(dòng)兩個(gè)指針來縮小查找的范圍。此時(shí),我們不得不采用順序查找的方法。2旋轉(zhuǎn)數(shù)組中查找某個(gè)數(shù)字要求:一個(gè)沒有重復(fù)元素的旋轉(zhuǎn)數(shù)組(它對應(yīng)的原數(shù)組是有序的),求給定元素在旋轉(zhuǎn)數(shù)組內(nèi)的下標(biāo)(不存在的返回-1)。例如有序數(shù)組為{0,1,2,4,5,6,7},它的一個(gè)旋轉(zhuǎn)數(shù)組為{4,5,6,7,0,1,2}。元素6在旋轉(zhuǎn)數(shù)組內(nèi),返回2元素3不在旋轉(zhuǎn)數(shù)組內(nèi),返回-1分析遍歷一遍,可以輕松搞定,時(shí)間復(fù)雜度為O(n),因?yàn)槭怯行驍?shù)組旋轉(zhuǎn)得到,這樣做肯定不是最優(yōu)解。有序,本能反映用二分查找,舉個(gè)例子看看特點(diǎn)可以看出中間位置兩段起碼有一個(gè)是有序的(不是左邊,就是右邊),那么就可以在有序的范圍內(nèi)使用二分查找;如果不再有序范圍內(nèi),就到另一半去找。參考代碼https://upload-images.jianshu.io/upload_images/3117364-5467a6bd9478bb9b?imageMogr2/auto-orient/strip擴(kuò)展邊的有求是沒有重復(fù)的元素,現(xiàn)在稍微擴(kuò)展下,可以有重復(fù)的元素,其他的要求不變。思路:大致思路與原來相同,這是需要比較A[beg]與A[mid]的關(guān)系https://upload-images.jianshu.io/upload_images/3117364-10408ab72f414310?imageMogr2/auto-orient/strip3數(shù)字在排序數(shù)組中的出現(xiàn)次數(shù)https://upload-images.jianshu.io/upload_images/3117364-651877eab930784f?imageMogr2/auto-orient/stripht
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 抗震支座鋼筋施工方案
- 果園道路安全施工方案
- 二零二五年度信用卡聯(lián)名信用卡與專屬客戶關(guān)懷服務(wù)合同
- 二零二五年度勞動(dòng)合同解除及競業(yè)限制合同模板
- 二零二五年度旅行社與旅行社旅游意外險(xiǎn)合作合同
- 2025年度電子商務(wù)就業(yè)人員勞動(dòng)合同范本
- 二零二五年度股權(quán)激勵(lì)計(jì)劃股份占比變更合同范本
- 二零二五年度辦公用品代理銷售服務(wù)合同
- 2025年度股東合作分紅與信息安全保障協(xié)議
- 二零二五年度辦公室文員企業(yè)財(cái)務(wù)支持聘用合同
- 小學(xué)生春耕教學(xué)課件
- 2025年個(gè)人投資合同電子版模板
- 車輛掛靠協(xié)議書
- 2025年湖南交通職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫1套
- 2017年公務(wù)員多省聯(lián)考《申論》真題(吉林甲級卷)及參考答案(含詳細(xì)解析)
- 《水利工程質(zhì)量檢測管理規(guī)定》知識培訓(xùn)
- 一年級下冊健康成長教案
- 法規(guī)解讀丨2024新版《突發(fā)事件應(yīng)對法》及其應(yīng)用案例
- JGJ46-2024 建筑與市政工程施工現(xiàn)場臨時(shí)用電安全技術(shù)標(biāo)準(zhǔn)
- 肺炎的中醫(yī)護(hù)理方案
- 基本樂理及音樂常識類知識考試題及答案
評論
0/150
提交評論