排序算法

排序算法

  • 說實在的随闽,這些算法都是應付面試用的父丰,真正的iOS開發(fā)過程中,蘋果都幫我們封裝好了相對應的方法,簡單省時省力蛾扇,效率還高攘烛。當然了,研究算法可以提升自己的編程思想镀首,以下案例都是從小到大排序
選擇排序
  • 取出第i個元素坟漱,依次和i后面的每一個元素對比,如果i+1元素比i元素小更哄,那么交換元素值芋齿,然后接著拿交換后的元素值進行對比,直到對比到最后一個元素成翩,其他元素以此類推
// 選擇排序
int nums[8] = {99, 123, 22, 6, 2, 55, 67, 100};
// 計算長度
int length = sizeof(nums) / sizeof(nums[0]);
for (int i = 0; i < length; i++) {
    for (int j = i + 1; j < length; j++) {
        if(nums[i] > nums[j]){
            // 交換元素值
            int temp = nums[i];
            nums[i] = nums[j];
            nums[j] = temp;
        }
    }
}
冒泡排序
  • 冒泡排序觅捆,就是用相鄰的兩個元素比較,每完全比較一次麻敌,最值就會出現(xiàn)在末尾
  • 1和2栅炒,2和3,3和4.........以此類推
// 冒泡排序
int nums[8] = {99, 123, 22, 6, 2, 55, 67, 100};
int length = sizeof(nums) / sizeof(nums[0]);
for(int i = 0; i < length - 1; i++){
    for (int j = 0; j < length - 1 - i; j++) {
        if(nums[j] > nums[j + 1]){
            int temp = nums[j];
            nums[j] = nums[j + 1];
            nums[j + 1] = temp;
        }
    }
}
折半查找
  • 數(shù)組必須是有序的
  • 必須已知min和max(知道范圍)
  • 動態(tài)計算mid的值术羔,取出mid對應的值進行比較
  • 如果mid對應的值大于需要查找的值赢赊,那么max = mid - 1
  • 如果mid對應的值小于需要查找的值,那么min = mid + 1
// 折半查找第一種方式
int findKey1(int nums[], int length, int key)
{
    int min, max, mid;
    min = 0;
    max = length - 1;
    mid = (min + max) / 2;

    while (key != nums[mid]) {
        if (key > nums[mid]) {
            // 判斷如果要找的值级历,大于了取出的值释移,那么min要改變
            min = mid + 1;
        }else if(key < nums[mid]){
            // 判斷如果要找的值,小雨了取出的值寥殖,那么max要改變
            max = mid - 1;
        }

        // 超出范圍,數(shù)組中沒有要查找的值
        if(min > max){
            return  -1;
        }
        mid = (max + min) / 2;
    }
    return mid;
}

// 折半查找第二種方式
int findKey2(int nums[], int length, int key)
{
    int min, max, mid;
    min = 0;
    max = length - 1;

    // 只要還在范圍內(nèi)就需要查找
    while (min <= max) {
        // 計算中間值
        mid = (max + min) / 2;
        if(key > nums[mid]){
            min = mid + 1;
        }else if(key < nums[mid]){
            max = mid - 1;
        }else{
            return mid;
        }
    }
    return  -1;
}
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末玩讳,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子扛禽,更是在濱河造成了極大的恐慌锋边,老刑警劉巖皱坛,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件编曼,死亡現(xiàn)場離奇詭異,居然都是意外死亡剩辟,警方通過查閱死者的電腦和手機掐场,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贩猎,“玉大人熊户,你說我怎么就攤上這事】苑” “怎么了嚷堡?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我蝌戒,道長串塑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任北苟,我火速辦了婚禮桩匪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘友鼻。我一直安慰自己傻昙,他們只是感情好,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布彩扔。 她就那樣靜靜地躺著妆档,像睡著了一般。 火紅的嫁衣襯著肌膚如雪借杰。 梳的紋絲不亂的頭發(fā)上过吻,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天,我揣著相機與錄音蔗衡,去河邊找鬼纤虽。 笑死,一個胖子當著我的面吹牛绞惦,可吹牛的內(nèi)容都是我干的逼纸。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼济蝉,長吁一口氣:“原來是場噩夢啊……” “哼杰刽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起王滤,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤贺嫂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后雁乡,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體第喳,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年踱稍,在試婚紗的時候發(fā)現(xiàn)自己被綠了曲饱。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡珠月,死狀恐怖扩淀,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情啤挎,我是刑警寧澤驻谆,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響胜臊,放射性物質(zhì)發(fā)生泄漏氛谜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一区端、第九天 我趴在偏房一處隱蔽的房頂上張望值漫。 院中可真熱鬧,春花似錦织盼、人聲如沸杨何。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽危虱。三九已至,卻和暖如春唐全,著一層夾襖步出監(jiān)牢的瞬間埃跷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工邮利, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留弥雹,地道東北人。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓延届,卻偏偏與公主長得像剪勿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子方庭,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361

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

  • 概述 排序有內(nèi)部排序和外部排序厕吉,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進行排序,而外部排序是因排序的數(shù)據(jù)很大械念,一次不能容納全部...
    蟻前閱讀 5,191評論 0 52
  • 概述:排序有內(nèi)部排序和外部排序头朱,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進行排序,而外部排序是因排序的數(shù)據(jù)很大龄减,一次不能容納全部...
    每天刷兩次牙閱讀 3,733評論 0 15
  • 總結(jié)一下常見的排序算法项钮。 排序分內(nèi)排序和外排序。內(nèi)排序:指在排序期間數(shù)據(jù)對象全部存放在內(nèi)存的排序欺殿。外排序:指在排序...
    jiangliang閱讀 1,350評論 0 1
  • //// PrefixHeader.pch// JNdefine//// Created by Titan ...
    不要打聽我的故事丶閱讀 845評論 4 6
  • 2017.06.21是我第三次考科目二脖苏。沒有緊張,只想趕緊考完定踱,結(jié)束棍潘。 前一天我喊了冬雪哥哥回來,然后送我...
    最愛齊劉海兒閱讀 383評論 0 1