分治算法(swift二分法排序遞歸實(shí)現(xiàn))

二分查找

1称近、二分查找(Binary Search)

 二分查找又稱折半查找块攒,它是一種效率較高的查找方法。
 二分查找要求:線性表是有序表南蹂,即表中結(jié)點(diǎn)按關(guān)鍵字有序犬金,并且要用向量作為表的存儲結(jié)構(gòu)。不妨設(shè)有序表是遞增有序的六剥。

2晚顷、二分查找的基本思想

 二分查找的基本思想是:(設(shè)R[low..high]是當(dāng)前的查找區(qū)間)
 (1)首先確定該區(qū)間的中點(diǎn)位置:
             
 (2)然后將待查的K值與R[mid].key比較:若相等,則查找成功并返回此位置疗疟,否則須確定新的查找區(qū)間该默,繼續(xù)二分查找,具體方法如下:

   ①若R[mid].key>K策彤,則由表的有序性可知R[mid..n].keys均大于K栓袖,因此若表中存在關(guān)鍵字等于K的結(jié)點(diǎn)匣摘,則該結(jié)點(diǎn)必定是在位置mid左邊的子表R[1..mid-1]中,故新的查找區(qū)間是左子表R[1..mid-1]裹刮。
   ②類似地音榜,若R[mid].key<K,則要查找的K必在mid的右子表R[mid+1..n]中必指,即新的查找區(qū)間是右子表R[mid+1..n]囊咏。下一次查找是針對新的查找區(qū)間進(jìn)行的。
 因此塔橡,從初始的查找區(qū)間R[1..n]開始梅割,每經(jīng)過一次與當(dāng)前查找區(qū)間的中點(diǎn)位置上的結(jié)點(diǎn)關(guān)鍵字的比較,就可確定查找是否成功葛家,不成功則當(dāng)前的查找區(qū)間就縮小一半户辞。這一過程重復(fù)直至找到關(guān)鍵字為K的結(jié)點(diǎn),或者直至當(dāng)前的查找區(qū)間為空(即查找失敗)時為止癞谒。

swift算法實(shí)現(xiàn)

//遞歸
     
func binary_divide(array:NSMutableArray, low: Int, high:Int, key:Int) -> Int {
    
    print("low=\(low) height=\(high) key=\(key)")
    if low > high {
        
        if key > array[low] as! Int {
            return low + 1
        } else {
            return low
        }
    }
    
    //如果中間值大于目標(biāo)值底燎,說明插入?yún)^(qū)間在 【low,(low + high) / 2 - 1】之間
    if array[(low + high)/2] as! Int > key {
        return binary_divide(array: array, low: low, high: (low + high) / 2 - 1, key: key)
    } else {
        //r如果中間值小于目標(biāo)值弹砚,說明區(qū)間在在【(low + high) / 2 + 1双仍,high】
       return  binary_divide(array: array, low:(low + high) / 2 + 1, high: high, key: key)

    }
}

func sort() {
    let arrar = NSMutableArray.init(array: [6, 10, 13, 3, 7, 20, 24, 100, 1, 3, 6 ])
    
    for i in 1...(arrar.count-1) {
    
        let key = arrar[i] as! Int
        var j = i - 1
        //在【0,j-1】區(qū)間利用二分發(fā)找到位置桌吃,之后朱沃,將【position,j-1】之間的元素向右(或者左)移動一位,直到全部排好序
        let position = binary_divide(array: arrar, low: 0, high: j, key: key )
        
        while j>=0 && j>=position {

            if arrar[j] as! Int > key {
                arrar[j + 1] = arrar[j]
            }
            j = j - 1
        }
        arrar[position] = key
        
        print(arrar)
        print("position = \(position)")

    
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末茅诱,一起剝皮案震驚了整個濱河市逗物,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瑟俭,老刑警劉巖翎卓,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異摆寄,居然都是意外死亡失暴,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門微饥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來锐帜,“玉大人,你說我怎么就攤上這事畜号〗裳郑” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵简软,是天一觀的道長蛮拔。 經(jīng)常有香客問我述暂,道長,這世上最難降的妖魔是什么建炫? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任畦韭,我火速辦了婚禮,結(jié)果婚禮上肛跌,老公的妹妹穿的比我還像新娘艺配。我一直安慰自己,他們只是感情好衍慎,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布转唉。 她就那樣靜靜地躺著,像睡著了一般稳捆。 火紅的嫁衣襯著肌膚如雪赠法。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天乔夯,我揣著相機(jī)與錄音砖织,去河邊找鬼。 笑死末荐,一個胖子當(dāng)著我的面吹牛侧纯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播甲脏,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼眶熬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了剃幌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤晾浴,失蹤者是張志新(化名)和其女友劉穎负乡,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體脊凰,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡抖棘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了狸涌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片切省。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖帕胆,靈堂內(nèi)的尸體忽然破棺而出朝捆,到底是詐尸還是另有隱情,我是刑警寧澤懒豹,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布芙盘,位于F島的核電站驯用,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏儒老。R本人自食惡果不足惜蝴乔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望驮樊。 院中可真熱鬧薇正,春花似錦、人聲如沸囚衔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽佳魔。三九已至曙聂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鞠鲜,已是汗流浹背宁脊。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贤姆,地道東北人榆苞。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像霞捡,于是被迫代替她去往敵國和親坐漏。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 看完書以后碧信,內(nèi)心久久不能平復(fù)赊琳,這就像我自己經(jīng)歷的故事,我就是其中的羅伯特或者弗朗西絲卡砰碴,腦海中一直縈繞著很多書中的...
    莘澤溪川閱讀 596評論 0 2
  • 自己的狀態(tài)時好時壞躏筏,有時候很討厭這樣的自己。 這兩天有些事情讓我逐漸弄明白了自己這個問題的根本所在呈枉。 昨天早上本來...
    木燊閱讀 302評論 1 1
  • 《梁卓性鳎》響起的時候芝囤,韓新月說她的靈魂好像得到了凈化,而我仿佛身體的每一個毛孔被打開繼而身體的每一塊骨頭被去除,輕盈...
    九六年的酒閱讀 1,962評論 3 1
  • 文人騷客 他們的筆墨 字眼當(dāng)中的 《美麗 痛徹 希翼 糾結(jié) 向往 無奈……》 他們時而歡脫,時而憂慮 看到過美挠轴,最...
    上官乃淺閱讀 194評論 0 0