PAT甲級專題復(fù)習(xí)1:排序?qū)n}總結(jié)

排序題目主要有以下兩種考察形式

1. 手撕經(jīng)典排序算法

判斷時什么排序年柠, 運(yùn)用排序算法進(jìn)行下一輪排序

直接插入排序(insertion sort
  • 特點:前n個有序,后半部分與原序列相同

  • 代碼(用sort函數(shù)模擬)

    void insert() {
      for (int i = 1; i <= len; i++) {
          sort(a, a + i);
      }
    }
    
希爾排序(shell sort
  • 模擬每一輪去判斷

  • 代碼

    void shell() {
      for (int d = len / 2; d >= 1; d /= 2) { // d為步長 
          for (int i = d; i < len; i++) {
              if (a[i] < a[i - d]) {
                  int num = a[i];
                  int j;
                  for (j = i - d; j >= 0 && a[j] > num; j -= d) {
                      a[j + d] = a[j];
                  }
                  a[j + d] = num;
              }
          }
      }
    }
    
簡單選擇排序(select sort
  • 代碼
void select() {
    for (int i = 0; i < len - 1; i++) {
        int k = i;
        for (int j = i; j < len; j++) {
            if (a[j] < a[k]) {
                k = j;
            }
        }
        swap(a[k], a[i]);
    }
}
堆排序
  • 數(shù)組從0開始編號和從1開始編號會影響代碼,此處為從1開始編號:堆中,父節(jié)點為i, 左兒子為2 * i+1, 右兒子為2* i+2誊薄;堆的最后一個節(jié)點編號為len - 1, 最后一個節(jié)點的父節(jié)點為len/2 - 1;
  • 代碼
void maxheap(int l, int r) {
    int father = l;
    int son = 2 * l + 1;
    while (son <= r) {
        if (son + 1 <= r && a[son] < a[son + 1]) son++;
        if (a[father] > a[son]) return;
        else {
            swap(a[son], a[father]);
            father = son;
            son = father * 2 + 1; 
        }
    }
}

void heapsort() {
    for (int i = len / 2 - 1; i >= 0; i--) maxheap(i, len - 1);
    for (int i = len - 1; i > 0; i--) {
        swap(a[i], a[0]);
        maxheap(0, i - 1);
    }
}
快速排序
  • 代碼
int partition(int l, int r) {
    int k = a[l];
    while (l < r) {
        while (l < r && a[r] >= k) r--;
        a[l] = a[r];
        while (l < r && a[l] <= k) l++;
        a[r] = a[l];
    }
    a[l] = k;
    return l;
}

void quicksort(int l, int r) {
    if (l < r) {
        int pivot = partition(l, r);
        cout<<endl;
        quicksort(l, pivot - 1);
        quicksort(pivot + 1, r);
    }
}
歸并排序
  • 代碼: 用sort模擬
void mergesort() {
    for (int i = 2; i <= len;) {
        for (int j = 0; j < len; j += i) {
            int t = min(j + i, len);
            sort(a + j, a + t);
        }
        if (i < len) i = min(2 * i, len);
        else break;
    }
}

2. 結(jié)構(gòu)體排序

結(jié)構(gòu)體數(shù)組,結(jié)構(gòu)體向量排序

對sort的使用

該考點比較簡單锰茉,是題目的考察點之一呢蔫, 但往往不是解題的難點和關(guān)鍵點

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市飒筑,隨后出現(xiàn)的幾起案子片吊,更是在濱河造成了極大的恐慌,老刑警劉巖协屡,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件俏脊,死亡現(xiàn)場離奇詭異,居然都是意外死亡肤晓,警方通過查閱死者的電腦和手機(jī)爷贫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門认然,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人漫萄,你說我怎么就攤上這事卷员。” “怎么了腾务?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵毕骡,是天一觀的道長。 經(jīng)常有香客問我窑睁,道長,這世上最難降的妖魔是什么葵孤? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任担钮,我火速辦了婚禮,結(jié)果婚禮上尤仍,老公的妹妹穿的比我還像新娘箫津。我一直安慰自己,他們只是感情好宰啦,可當(dāng)我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布苏遥。 她就那樣靜靜地躺著,像睡著了一般赡模。 火紅的嫁衣襯著肌膚如雪田炭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天漓柑,我揣著相機(jī)與錄音教硫,去河邊找鬼。 笑死辆布,一個胖子當(dāng)著我的面吹牛瞬矩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播锋玲,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼景用,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了惭蹂?” 一聲冷哼從身側(cè)響起伞插,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎盾碗,沒想到半個月后蜂怎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡置尔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年杠步,在試婚紗的時候發(fā)現(xiàn)自己被綠了氢伟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡幽歼,死狀恐怖朵锣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情甸私,我是刑警寧澤诚些,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站皇型,受9級特大地震影響诬烹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜弃鸦,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一绞吁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧唬格,春花似錦家破、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至喊积,卻和暖如春烹困,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背乾吻。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工韭邓, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人溶弟。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓女淑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親辜御。 傳聞我的和親對象是個殘疾皇子鸭你,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,925評論 2 344

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