常用排序

選擇排序

選擇排序應(yīng)該是最容易被想到的排序方式吧
1.從頭開(kāi)始澡谭,與自己的后一位比較,如果小的就交換值
2.外層循環(huán)執(zhí)行 n-1 次即可

  • 平均時(shí)間復(fù)雜度:O(n2)
  • 最好情況復(fù)雜度:O(n2)
  • 最壞情況復(fù)雜度:O(n2)
void selectSort(int *arr, int count){
        for (int i = 0; i < count -1; i++){        // count - 1 次即可完成排序
              for(int j = i+1; j < count; j++){    // 從 i 位置 逐個(gè)與 后面的元素進(jìn)行比較
                 if(arr[i] >= arr[j]) continue;
                   arr[i] = arr[i] + arr[j];       // 交換
                   arr[j] = arr[i] - arr[j];
                   arr[i] = arr[i] - arr[j];
              }
        }
}

冒泡排序

1.從頭開(kāi)始相鄰兩個(gè)元素兩兩比較西剥,a[i] > a[i+1] 交換則交換兩者位置
2.每循環(huán)一次痹栖,即可確定一位

  • 平均時(shí)間復(fù)雜度:O(n2)
  • 最好情況復(fù)雜度: O(n)
  • 最壞情況復(fù)雜度:O(n2)
 void bubbleSort(int *arr, int count){
    for(int i = 0; i < count; i++){
         for(int j = 0; j < count - 1 - i; j++){
                if (arr[j] < arr[j+1]){
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
              }
        }
    }
}

插入排序

貌似撲克牌整理順序
1.從頭開(kāi)始,逐個(gè)跟前一個(gè)元素對(duì)比
2.如果比前一個(gè)元素小瞭空,即交換兩個(gè)元素的位置揪阿,交換的次數(shù)比較多

  • 平均時(shí)間復(fù)雜度:O(n2)
  • 最好情況復(fù)雜度:O(n)
  • 最壞情況復(fù)雜度: O(n2)
 void insertSort(int *arr,int count){
    for(int i = 0; i < count; i++){    // 一共循環(huán)的次數(shù)
        for(int j = i; j>0;j--){      //從當(dāng)前 i 的位置與前一個(gè)對(duì)比
            if(arr[j] < arr[j-1]){    // 如果后者小于前者,則交換咆畏,否則結(jié)束當(dāng)前循環(huán)進(jìn)入下一次南捂。
                int temp = arr[j];
                arr[j] = arr[j-1];
                arr[j-1] = temp;
            }else{
                break;
        } 
    }
}

歸并排序

所謂 歸并 是指將若干個(gè)已排好序的部分合并成一個(gè)有序的部分。

  • 平均時(shí)間復(fù)雜度:O( n log n)
  • 最好情況復(fù)雜度:O( n log n)
  • 最差情況復(fù)雜度:O( n log n)
void mergeSort(int *total, int *arr_A, int length_A, int *arr_B, int length_B){
        int i = 0;
        int j = 0;
        while( i < length_A && j < length_B){
              if( arr_A[i] < arr_B[j] ){
                  total[ i + j ] = arr_A[i++];
                }else{
                  total[ i+j ] = arr_B[j++];
                }

        while(i<length_A){
              total[ i+j ] = arr_A[i];
              i++;
        }

        while(j < length_B){
              total [ i + j ] = arr_B[j];
              j++;
       }
}

快速排序

快排是現(xiàn)有排序算法中最快的
1.選擇一個(gè)值旧找,將數(shù)組中比該值大的都放到該值右側(cè)溺健,小的都放到左側(cè)
2.以該值的位置將數(shù)組分割成左右兩個(gè)部分,分別對(duì)左右兩個(gè)部分執(zhí)行上一步操作

  • 平均時(shí)間復(fù)雜度:O(n log n)
  • 最好情況復(fù)雜度: O(n log n)
  • 最壞情況復(fù)雜度: O(n2)
void quickSort(int *arr, int leftIndex, int rightIndex){
      if (leftIndex >= rightIndex) return;
       int kp = keyPoint(arr,leftIndex,rightIndex);
        quickSort(leftIndex,kp-1);
        quickSort(kp+1,rightIndex);
}

int keyPoint(int *arr, int leftIndex,int rightIndex){
      int l = leftIndex;
      int r = rightIndex;
      int key = arr[i];
      while(l < r){
          while( l < r && arr[r] > key) r--;
          if (l < r){
            arr[l++] = arr[r];
           }
          while(l < r && arr[l] < key) l++;
          if (l < r){
              arr[r--] = arr[l];
          }
          arr[l] = key;
      }
    return l;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末钮蛛,一起剝皮案震驚了整個(gè)濱河市鞭缭,隨后出現(xiàn)的幾起案子剖膳,更是在濱河造成了極大的恐慌,老刑警劉巖岭辣,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吱晒,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡沦童,警方通過(guò)查閱死者的電腦和手機(jī)仑濒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)偷遗,“玉大人躏精,你說(shuō)我怎么就攤上這事○兄祝” “怎么了矗烛?”我有些...
    開(kāi)封第一講書人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)箩溃。 經(jīng)常有香客問(wèn)我瞭吃,道長(zhǎng),這世上最難降的妖魔是什么涣旨? 我笑而不...
    開(kāi)封第一講書人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任歪架,我火速辦了婚禮,結(jié)果婚禮上霹陡,老公的妹妹穿的比我還像新娘和蚪。我一直安慰自己,他們只是感情好烹棉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布攒霹。 她就那樣靜靜地躺著,像睡著了一般浆洗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上伏社,一...
    開(kāi)封第一講書人閱讀 51,258評(píng)論 1 300
  • 那天摘昌,我揣著相機(jī)與錄音聪黎,去河邊找鬼。 笑死烘跺,一個(gè)胖子當(dāng)著我的面吹牛滤淳,可吹牛的內(nèi)容都是我干的砌左。 我是一名探鬼主播汇歹,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼产弹,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼痰哨!你這毒婦竟也來(lái)了斤斧?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎甘苍,沒(méi)想到半個(gè)月后羊赵,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瓶蝴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舷手。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡男窟,死狀恐怖歉眷,靈堂內(nèi)的尸體忽然破棺而出汗捡,到底是詐尸還是另有隱情,我是刑警寧澤庸追,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站咱娶,受9級(jí)特大地震影響强品,放射性物質(zhì)發(fā)生泄漏的榛。R本人自食惡果不足惜夫晌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一所袁、第九天 我趴在偏房一處隱蔽的房頂上張望凶掰。 院中可真熱鬧,春花似錦稚配、人聲如沸药有。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)奠旺。三九已至施流,卻和暖如春忿晕,著一層夾襖步出監(jiān)牢的瞬間银受,已是汗流浹背宾巍。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工肄程, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蓝厌,地道東北人褂始。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像胆数,于是被迫代替她去往敵國(guó)和親必尼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

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

  • 本文僅作為個(gè)人學(xué)習(xí)排序算法的參考筆記膛檀,若想詳細(xì)了解學(xué)習(xí)咖刃,請(qǐng)前往 http://blog.csdn.net/han_...
    biubiu15閱讀 565評(píng)論 0 0
  • 冒泡排序 算法思想: 對(duì)于一組需要排序的數(shù)據(jù),對(duì)于相鄰的兩個(gè)數(shù)進(jìn)行比較翠胰,使較大(或者較小)的數(shù)一直向后推锻狗,經(jīng)過(guò)多層...
    cnkai閱讀 462評(píng)論 1 4
  • 其實(shí)寫排序算法的博客已經(jīng)有很多了,其中不乏某些細(xì)心的博主去仔細(xì)講解各種排序的過(guò)程,甚至有使用gif圖來(lái)表現(xiàn)排序過(guò)程...
    qufl閱讀 2,045評(píng)論 0 51
  • 插入排序 概述: 有一個(gè)已經(jīng)有序的數(shù)據(jù)序列掂僵,要求在這個(gè)已經(jīng)排好的數(shù)據(jù)序列中插入一個(gè)數(shù),但要求插入后此數(shù)據(jù)序列仍然有...
    街角仰望閱讀 883評(píng)論 0 8
  • 秋寒裹著空曠 陽(yáng)光漫不經(jīng)心地流淌 一副無(wú)精打采的模樣 楊柳依稀能見(jiàn)茂盛的過(guò)往 枝條在冷風(fēng)中徜徉 綠葉如同記憶在泛黃...
    半是瞎忙半是閑閱讀 248評(píng)論 6 2