IOS 數(shù)據(jù)結(jié)構(gòu)和算法

僅用于個人學(xué)習(xí)記錄踢星,代碼不是最優(yōu)寫法橘沥,只是方便記錄算法思想喉祭,會持續(xù)更新


鏈表

1、鏈表

  • 查找
  • 插入
  • 移除

2炮沐、棧(先進后出,尾部添加或刪除元素)

  • push(入棧)
  • pop(出棧)
  • peek(獲取頂部值)

3回怜、隊列(先進先出大年,尾部添加元素,頭部刪除元素)

  • enqueue(入隊)
  • dequeue(出隊)
  • peek(獲取頂部值)

4玉雾、雙鏈表(與鏈表區(qū)別在于翔试,雙向指針)

  • 查找
  • 插入
  • 移除

5、雙端隊列(與棧和隊列的區(qū)別抹凳,首尾都能添加元素遏餐,首尾均能出列)

  • enqueue(入隊)
  • dequeue(出隊)
  • peek(獲取頂部值)

排序算法

  • 冒泡排序
/*
 * 冒泡排序,相鄰兩個對比赢底,前者比后者大失都,交換位置
 *
 */

-(void)bubbleSort{
    NSMutableArray *array = [NSMutableArray arrayWithArray:@[@3,@44,@38,@5,@47,@15,@36,@26,@27,@2,@46,@4,@19,@50,@49]];
    BOOL swapped = NO;
    do {
        swapped = NO;
        for (int i = 1; i < array.count; i++) {
            NSInteger num1 = [array[i-1] integerValue];
            NSInteger num2 = [array[i] integerValue];
            if (num1 >num2) {
                [array replaceObjectAtIndex:i-1 withObject:[NSNumber numberWithInteger:num2]];
                [array replaceObjectAtIndex:i withObject:[NSNumber numberWithInteger:num1]];
                swapped = YES;
            }
        }
    } while (swapped);
    NSLog(@"冒的排序:%@",array);
}
  • 選擇排序
/*
 * 選擇排序,標(biāo)記最小值幸冻,循環(huán)比較粹庞,替換最小值
 *
 */

-(void)selectionSort{
    NSMutableArray *array = [NSMutableArray arrayWithArray:@[@3,@44,@38,@5,@47,@15,@36,@26,@27,@2,@46,@4,@19,@50,@49]];
    NSInteger repeatTimes = array.count -1;
    int sortBeginIndex = 0;//開始對比下標(biāo)
    do {
        int miniNumIndex = sortBeginIndex;
        NSInteger miniNum = [array[sortBeginIndex] integerValue];
        for (int i = sortBeginIndex +1; i < array.count; i++) {
            NSInteger selectNum = [array[i] integerValue];
            if (selectNum < miniNum) {
                miniNum = selectNum;
                miniNumIndex = i;
            }
        }
        [array replaceObjectAtIndex:miniNumIndex withObject:array[sortBeginIndex]];
        [array replaceObjectAtIndex:sortBeginIndex withObject:[NSNumber numberWithInteger:miniNum]];
        sortBeginIndex ++;
        repeatTimes --;
    } while (repeatTimes > 0);
    NSLog(@"選擇排序:%@",array);
}
  • 插入排序
/*
 * 插入排序,逐個元素拿出來洽损,與其左邊元素逐個對比庞溜,碰到比該元素小的元素,則插入在對比元素后
 *
 */

-(void)insertionSort{
    NSMutableArray *array = [NSMutableArray arrayWithArray:@[@3,@44,@38,@5,@47,@15,@36,@26,@27,@2,@46,@4,@19,@50,@49]];
    int sortBeginIndex = 1;//開始對比下標(biāo)
    do {
        NSInteger sortBeginNum = [array[sortBeginIndex] integerValue];
        [array removeObjectAtIndex:sortBeginIndex];
        for (int i = sortBeginIndex -1; i >= 0; i--) {
            NSInteger compareNum = [array[i] integerValue];
            if (compareNum < sortBeginNum) {
                [array insertObject:[NSNumber numberWithInteger:sortBeginNum] atIndex:i+1];
                break;
            }else{
                if (i==0) {
                    [array insertObject:[NSNumber numberWithInteger:sortBeginNum] atIndex:0];
                }
            }
        }
        sortBeginIndex ++;
    } while (sortBeginIndex < array.count);
    NSLog(@"插入排序:%@",array);
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市流码,隨后出現(xiàn)的幾起案子又官,更是在濱河造成了極大的恐慌,老刑警劉巖漫试,帶你破解...
    沈念sama閱讀 211,423評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件六敬,死亡現(xiàn)場離奇詭異,居然都是意外死亡驾荣,警方通過查閱死者的電腦和手機外构,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,147評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來播掷,“玉大人审编,你說我怎么就攤上這事∑缧伲” “怎么了垒酬?”我有些...
    開封第一講書人閱讀 157,019評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長眯亦。 經(jīng)常有香客問我伤溉,道長,這世上最難降的妖魔是什么妻率? 我笑而不...
    開封第一講書人閱讀 56,443評論 1 283
  • 正文 為了忘掉前任乱顾,我火速辦了婚禮,結(jié)果婚禮上宫静,老公的妹妹穿的比我還像新娘走净。我一直安慰自己,他們只是感情好孤里,可當(dāng)我...
    茶點故事閱讀 65,535評論 6 385
  • 文/花漫 我一把揭開白布伏伯。 她就那樣靜靜地躺著,像睡著了一般捌袜。 火紅的嫁衣襯著肌膚如雪说搅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,798評論 1 290
  • 那天虏等,我揣著相機與錄音弄唧,去河邊找鬼。 笑死霍衫,一個胖子當(dāng)著我的面吹牛候引,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播敦跌,決...
    沈念sama閱讀 38,941評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼澄干,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起麸俘,我...
    開封第一講書人閱讀 37,704評論 0 266
  • 序言:老撾萬榮一對情侶失蹤辩稽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后疾掰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體搂誉,經(jīng)...
    沈念sama閱讀 44,152評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,494評論 2 327
  • 正文 我和宋清朗相戀三年静檬,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片并级。...
    茶點故事閱讀 38,629評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡拂檩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出嘲碧,到底是詐尸還是另有隱情稻励,我是刑警寧澤,帶...
    沈念sama閱讀 34,295評論 4 329
  • 正文 年R本政府宣布愈涩,位于F島的核電站望抽,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏履婉。R本人自食惡果不足惜煤篙,卻給世界環(huán)境...
    茶點故事閱讀 39,901評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望毁腿。 院中可真熱鬧辑奈,春花似錦、人聲如沸已烤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽胯究。三九已至稍计,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間裕循,已是汗流浹背臣嚣。 一陣腳步聲響...
    開封第一講書人閱讀 31,978評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留费韭,地道東北人茧球。 一個月前我還...
    沈念sama閱讀 46,333評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像星持,于是被迫代替她去往敵國和親抢埋。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,499評論 2 348

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