查看全部128種考試
軟件水平考試
 考試動(dòng)態(tài) 報(bào)考指南 歷年真題 模擬試題 復(fù)習(xí)資料 心得技巧 專業(yè)英語(yǔ) 技術(shù)文章 軟考論壇 考試用書
 程序員 軟件設(shè)計(jì)師 網(wǎng)絡(luò)管理員 網(wǎng)絡(luò)工程師 系統(tǒng)分析師 數(shù)據(jù)庫(kù)系統(tǒng)工程師
1
2
3
4
5
6
7
8
9
10
ak47  
【字體: 程序員考試:數(shù)據(jù)結(jié)構(gòu)筆記
程序員考試:數(shù)據(jù)結(jié)構(gòu)筆記
spks.exam8.com 來(lái)源:考試吧Exam8.com) 更新:2005-3-25 11:20:00 軟件水平考試 考試論壇


五、排序

    一、知識(shí)點(diǎn)

  1、排序的定義
         /內(nèi)排序:只在內(nèi)存中進(jìn)行
  2、排序的分類
         \外排序:與內(nèi)外存進(jìn)行排序 
   內(nèi)排序:   /直接插入排序
    1)插入排序
          \shell排序
          /冒泡排序
    2)交換排序 
          \快速排序
           /簡(jiǎn)單選擇排序
    3)選擇排序 堆
           \ 錦標(biāo)賽排序
    4)歸并排序(二路)
    5)基數(shù)排序(多關(guān)鏈字排序)
  3、時(shí)間復(fù)雜度(上午題目常考,不會(huì)求也得記住啊兄弟姐妹們!)

         * * * * * * 15 * * * 15 * * *
    /穩(wěn)定   * * * * * * * * 15 15 * * * *(前后不變) 
  排序  
    \ 不穩(wěn)定 * * * * * * * * 15 15 * * * *(前后改變)
  經(jīng)整理得:選擇、希爾、堆、快速排序是不穩(wěn)定的;直接插入、冒泡、合并排序是穩(wěn)定的。

  ●錦標(biāo)賽排序方法: 13  16  11  18  21  3  17  6 
             \  /   \  /   \  /    \ /
              13     11     3      6 
              \     /      \     /
                 11           3
                  \           /
                        3(勝出,將其拿出,并令其為正無(wú)窮&Go On)

  ●歸并排序方法:  13  16  11  18  21  3  17  6 
             \  /   \  /   \  /   \  /
             13,16    11,18    3,21    6,17
              \     /      \     /
              11,13,16,18       3,6,17,21
                 \           /
                  3,6,11,13,16,17,18,21

  ●shell排序算法:1)定義一個(gè)步長(zhǎng)(或者說增量)數(shù)組D[m];其中:D[m-1]=1(最后一個(gè)增量必須為1,否則可能不完全)
         2)共排m趟,其中第i趟增量為D[i],把整個(gè)序列分成D[i]個(gè)子序列,分別對(duì)這D[i]個(gè)子序列進(jìn)行直接插入排序。
         程序如下: for(i=0;i<m;i++)
              {for(j=0;j<d[i];j++)
               {對(duì)第i個(gè)子序列進(jìn)行直接插入排序; 
                  注意:下標(biāo)之差為D[i];
               }
              }

  ●快速排序 ( smaller )data ( bigger )
   d[] i-> 13 16 11 18 21 3 17 6 24 8 <-j
   先從后往前找,再?gòu)那巴笳。?BR>   思想:空一個(gè)插入一個(gè),i空j挪,j空i挪(這里的i,j是指i,j兩指針?biāo)傅南聵?biāo))。
   一次執(zhí)行算法:1)令temp=d[0](樞紐),i=0,j=n-1;
           2)奇數(shù)次時(shí)從j位置出發(fā)向前找第一個(gè)比temp小的元素,找到后放到i的位置(d[i]=d[j];i++;) i往后挪。
          3)偶數(shù)次時(shí)從i開始往后找第一個(gè)比temp大的數(shù),(d[j]=d[i];j--;)
          4)當(dāng)i=j時(shí),結(jié)束循環(huán)。d[i]=temp;
  再用遞歸對(duì)左右進(jìn)行快速排序,因?yàn)榭焖倥判蚴且粋(gè)典型的遞歸算法。

  ●堆排序 
    定義:d[n]滿足條件:d[i]<d[2i+1]&&d[i]<d[2i+2] 大堆(上大下。
              d[i]>d[2i+1]&&d[i]>d[2i+2] 小堆(上小下大)
    判斷是否為堆應(yīng)該將其轉(zhuǎn)換成樹的形式?偣才判騨-1次

  調(diào)整(重點(diǎn))
   程序: flag=0;
      while(i<=n-1) {
       if(d[i]<d[2*i+1])||(d[i]<d[2*i+2]))
       { if(d[2*i+1]>d[2*i+2]) 8 24 {d[i]<->d[2*i+1]; 24 21 -> 8 21
        i=2*i+1;
        else {
         d[i]<->d[2*i+2];
         i=2*i+2;
        }
       }
       else
        flag=1; //是堆
      }

  堆排序過程:

  ●基數(shù)排序(多關(guān)鍵字排序)
  撲克: 1) 大小->分配
     2) 花色->分配,收集
  思想:分配再收集.
  構(gòu)建鏈表:鏈表個(gè)數(shù)根據(jù)關(guān)鍵字取值個(gè)數(shù)有關(guān).
  例:將下面九個(gè)三位數(shù)排序:
    321 214 665 102 874 699 210 333 600
   定義一個(gè)有十個(gè)元素的數(shù)組:

          a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 
   第一趟(個(gè)位): 210 321 102 333 214 665         699 
          600         874
       結(jié)果: 210 600 321 102 333 214 874 665 699
   第二趟(十位): 600 210 321    333    665 874    699 
          102 214
       結(jié)果: 600 102 210 214 321 333 665 874 699
   第三趟(百位): 102 210 321      600    874
             214 333      665
                       699
       結(jié)果: 102 210 214 321 333 600 665 699 874(排序成功)

  程序員考試下午試題最后一道一般是八大類算法里頭的.大家尤其要注意的是遞歸,因?yàn)榻鼛啄甓伎剂,而且有的還考兩題。

    /數(shù)據(jù)結(jié)構(gòu)(離散)
  迭代
    \數(shù)值計(jì)算(連續(xù))
  枚舉 策略好壞很重要
  遞推
  遞歸
  回溯
  分治
  貪婪
  動(dòng)態(tài)規(guī)劃
  其中:遞推、遞歸、分治、動(dòng)態(tài)規(guī)劃四種算法思想基本相似。都是把大問題變成小問題,但技術(shù)上有差別。

上一頁(yè)  [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一頁(yè)

轉(zhuǎn)帖于:軟件水平考試_考試吧
文章搜索  
看了本文的網(wǎng)友還看了:
網(wǎng)友評(píng)論
昵 稱: *  評(píng) 分: 1分 2分 3分 4分 5分
標(biāo)題:   匿名發(fā)表    (共有條評(píng)論)查看全部評(píng)論>>
版權(quán)聲明 -------------------------------------------------------------------------------------
  如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請(qǐng)注明出處。
關(guān)于本站  網(wǎng)站聲明  廣告服務(wù)  聯(lián)系方式  付款方式  站內(nèi)導(dǎo)航  客服中心  友情鏈接  考試論壇  網(wǎng)站地圖
Copyright © 2004-2008 考試吧軟件水平考試網(wǎng) All Rights Reserved    
中國(guó)科學(xué)院研究生院權(quán)威支持(北京) 電 話:010-62168566 傳 真:010-62192699
百度大聯(lián)盟黃金認(rèn)證  十佳網(wǎng)絡(luò)教育機(jī)構(gòu)  經(jīng)營(yíng)許可證號(hào):京ICP060677