常用排序算法學(xué)習(xí)(swift版)

前言

之前寫(xiě)過(guò)一篇Swift排序之sort函數(shù),里面僅僅寫(xiě)了sort函數(shù)怎么使用丸氛。今天用一些常用的算法,試著實(shí)現(xiàn)一下swift中的sort函數(shù),順便也學(xué)習(xí)一下常用的排序算法。
最近在網(wǎng)上也看了一些swift的排序算法灭将,但是感覺(jué)寫(xiě)的都不太好,都是類(lèi)似于這種

func sort(a:[Int]) {
    .......
}

這種其實(shí)也不是不行后控,但是有點(diǎn)不太符合swift的風(fēng)格庙曙,我們看swift中的sort是沒(méi)有把數(shù)組傳過(guò)去的,他只是Array的一個(gè)擴(kuò)展浩淘。應(yīng)該是這么用的

let a = ["2","1","3"]
a.sort(<)

下面我們拋開(kāi)正序還是倒敘捌朴,默認(rèn)為正序排,來(lái)探討下swift中基于Array的擴(kuò)展的冒泡排序馋袜,選擇排序和快速排序

1. 冒泡排序

冒泡排序再基礎(chǔ)不過(guò)了,這里就不再講其原理了舶斧,實(shí)在不會(huì)可以看下百度百科冒泡排序
既然冒泡排序避免不了數(shù)組中兩個(gè)數(shù)據(jù)交換欣鳖,先寫(xiě)一個(gè)交換函數(shù)

// 交換數(shù)組中i和j兩個(gè)位置的數(shù)據(jù)
extension Array {

    fileprivate mutating func swap(i:Int,j:Int) {

        (self[i],self[j]) = (self[j],self[i])
    
    }
}

下面就是排序了也很簡(jiǎn)單就不多解釋了

 // MARK: - 冒泡排序
/**
 * 通過(guò)與相鄰元素的比較和交換,把小的數(shù)交換到最前面茴厉。
 */
extension Array where Element:Comparable {

    mutating func bubbleSort() {

        for i in 0..<self.count-1 {

            for j in (i+1...self.count-1).reversed() {
                // 后者小于前者泽台,交換位置什荣,即小的往上升大的往下沉
                if self[j] < self[j-1] {
                    swap(i: j, j: j-1)
                }

            }

        }  

    }

}

因?yàn)槭桥判颍栽乇仨殱M(mǎn)足協(xié)議是可比較的怀酷。
下面快速排序和選擇排序也是同樣的道理稻爬。

2. 快速排序

快速排序的思想

源代碼這里先截下圖,想看的話可以去我github上下載源代碼

快速排序
接上圖

選擇排序這里就不說(shuō)了蜕依,大家可以自己嘗試寫(xiě)一下桅锄,有興趣可以去我github下載源代碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市样眠,隨后出現(xiàn)的幾起案子友瘤,更是在濱河造成了極大的恐慌,老刑警劉巖檐束,帶你破解...
    沈念sama閱讀 222,729評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辫秧,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡被丧,警方通過(guò)查閱死者的電腦和手機(jī)盟戏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)甥桂,“玉大人柿究,你說(shuō)我怎么就攤上這事「襦遥” “怎么了笛求?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,461評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)糕簿。 經(jīng)常有香客問(wèn)我探入,道長(zhǎng),這世上最難降的妖魔是什么懂诗? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,135評(píng)論 1 300
  • 正文 為了忘掉前任蜂嗽,我火速辦了婚禮,結(jié)果婚禮上殃恒,老公的妹妹穿的比我還像新娘植旧。我一直安慰自己,他們只是感情好离唐,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布病附。 她就那樣靜靜地躺著,像睡著了一般亥鬓。 火紅的嫁衣襯著肌膚如雪完沪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,736評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音覆积,去河邊找鬼听皿。 笑死,一個(gè)胖子當(dāng)著我的面吹牛宽档,可吹牛的內(nèi)容都是我干的尉姨。 我是一名探鬼主播,決...
    沈念sama閱讀 41,179評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼吗冤,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼又厉!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起欣孤,我...
    開(kāi)封第一講書(shū)人閱讀 40,124評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤馋没,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后降传,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體篷朵,經(jīng)...
    沈念sama閱讀 46,657評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評(píng)論 3 342
  • 正文 我和宋清朗相戀三年婆排,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了声旺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,872評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡段只,死狀恐怖腮猖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情赞枕,我是刑警寧澤澈缺,帶...
    沈念sama閱讀 36,533評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站炕婶,受9級(jí)特大地震影響姐赡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜柠掂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評(píng)論 3 336
  • 文/蒙蒙 一项滑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧涯贞,春花似錦枪狂、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,700評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至皇拣,卻和暖如春严蓖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,819評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工谈飒, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人态蒂。 一個(gè)月前我還...
    沈念sama閱讀 49,304評(píng)論 3 379
  • 正文 我出身青樓杭措,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親钾恢。 傳聞我的和親對(duì)象是個(gè)殘疾皇子手素,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評(píng)論 2 361

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

  • 某次二面時(shí),面試官問(wèn)起Js排序問(wèn)題瘩蚪,吾絞盡腦汁回答了幾種泉懦,深感算法有很大的問(wèn)題,所以總計(jì)一下疹瘦! 排序算法說(shuō)明 (1...
    流浪的先知閱讀 1,194評(píng)論 0 4
  • Ba la la la ~ 讀者朋友們崩哩,你們好啊,又到了冷鋒時(shí)間言沐,話不多說(shuō)邓嘹,發(fā)車(chē)! 1.冒泡排序(Bub...
    王飽飽閱讀 1,801評(píng)論 0 7
  • 千金凈雅是湖南千金藥業(yè)旗下的险胰,關(guān)注女性健康50年的大企業(yè)汹押,大品牌。千金凈雅自從2012上市以來(lái)起便,我一直在用它棚贾,真心...
    成穎閱讀 570評(píng)論 0 0
  • 提升敏感度 才會(huì)有更好的人際關(guān)系 文‖心靈之音 我們有沒(méi)有過(guò)這樣的經(jīng)歷:對(duì)方總是不明白我要表達(dá)的奖年?我們總是不明白對(duì)...
    心靈之音的空間閱讀 466評(píng)論 1 1