使用OC寫算法之冒泡排序

很久沒有來寫博客了怎茫,最近一直在看數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的東西收壕,所以接下來的日子會(huì)持續(xù)給各位簡(jiǎn)友帶來“使用OC寫算法”系列,今天來個(gè)最基礎(chǔ)的,冒泡排序

冒泡排序基本思路

冒泡排序的基本思想是轨蛤,對(duì)相鄰的元素進(jìn)行兩兩比較啼器,順序相反則進(jìn)行交換,這樣俱萍,每一趟會(huì)將最小或最大的元素“浮”到頂端,最終達(dá)到完全有序

冒泡排序OC實(shí)現(xiàn)

這是一個(gè)用于生成一個(gè)隨機(jī)數(shù)組的方法告丢,在以后的文章里面都會(huì)用到

/**
 獲取一個(gè)數(shù)組

 @param count 數(shù)組個(gè)數(shù)
 @param left 隨機(jī)數(shù)范圍起始位置
 @param right 隨機(jī)數(shù)范圍結(jié)束位置
 @return 隨機(jī)數(shù)數(shù)組
 */
- (NSMutableArray *)randomNumArray:(NSInteger)count randomLeft:(int)left randomRight:(int)right{
    NSMutableArray * tempArray = [NSMutableArray array];
    for (int i = 0; i < count; i ++) {
        int randomNum = arc4random()%(right - left + 1) + left;
        [tempArray addObject:@(randomNum)];
    }
    return tempArray;
}
/**
 冒泡排序

 @param array 待排序數(shù)組
 */
- (void)bubbleSort:(NSMutableArray *)array {
    for (int i = 0; i < array.count; i ++) {
        //設(shè)定一個(gè)標(biāo)記枪蘑,若為true,則表示此次循環(huán)沒有進(jìn)行交換岖免,也就是待排序列已經(jīng)有序岳颇,排序已然完成。
        BOOL flag = true;
        //內(nèi)層循環(huán)
        for (int j = 0; j <array.count -1 - i; j++) {
            if (array[j] > array[j +1]) {
                [array exchangeObjectAtIndex:j withObjectAtIndex:j+1];
                flag = NO;
            }
        }
        if (flag) {
            break;
        }
    }
    NSLog(@"%@",array);
}
Swift來一波
    public static func bubbleSort(){
        var array = [10,11,12,34,14]
        let count = array.count
        for i in 0..<count {
            for j in (0..<count - 1 - i){
                if array[j] > array[j+1] {
                    array.swapAt(j, j+1)
                }
            }
        }
        print(array)
    }
代碼實(shí)踐
  NSMutableArray *array = [self randomNumArray:10 randomLeft:1 randomRight:100];
 [self bubbleSort:array1];
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末颅湘,一起剝皮案震驚了整個(gè)濱河市话侧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌闯参,老刑警劉巖瞻鹏,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異鹿寨,居然都是意外死亡新博,警方通過查閱死者的電腦和手機(jī)脚草,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門赫悄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人馏慨,你說我怎么就攤上這事埂淮。” “怎么了写隶?”我有些...
    開封第一講書人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵倔撞,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我樟澜,道長(zhǎng)误窖,這世上最難降的妖魔是什么叮盘? 我笑而不...
    開封第一講書人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮霹俺,結(jié)果婚禮上柔吼,老公的妹妹穿的比我還像新娘。我一直安慰自己丙唧,他們只是感情好愈魏,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著想际,像睡著了一般培漏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上胡本,一...
    開封第一講書人閱讀 49,842評(píng)論 1 290
  • 那天牌柄,我揣著相機(jī)與錄音,去河邊找鬼侧甫。 笑死珊佣,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的披粟。 我是一名探鬼主播咒锻,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼守屉!你這毒婦竟也來了惑艇?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤拇泛,失蹤者是張志新(化名)和其女友劉穎滨巴,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體碰镜,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡兢卵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了绪颖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秽荤。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖柠横,靈堂內(nèi)的尸體忽然破棺而出窃款,到底是詐尸還是另有隱情,我是刑警寧澤牍氛,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布晨继,位于F島的核電站,受9級(jí)特大地震影響搬俊,放射性物質(zhì)發(fā)生泄漏紊扬。R本人自食惡果不足惜蜒茄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望餐屎。 院中可真熱鬧檀葛,春花似錦、人聲如沸腹缩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽藏鹊。三九已至润讥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間盘寡,已是汗流浹背楚殿。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留竿痰,地道東北人勒魔。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像菇曲,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子抚吠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

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