標題: 數(shù)據(jù)結(jié)構(gòu)復(fù)習v3.0_電信二班_煥楠 [打印本頁]

作者: bibi    時間: 2015-4-19 01:41
標題: 數(shù)據(jù)結(jié)構(gòu)復(fù)習v3.0_電信二班_煥楠
                                 
電子信息工程132)班 吳煥楠
歡迎加QQ1435378192相互學習
歡迎加入學霸交流群293194287
全文用楠妹的口吻編寫,為了增加趣味性
新版特性:追加楠妹語言,以及部分代碼。
感謝電信1班澤銳提出的錯誤(冒泡法那里)
注:僅列出電信專業(yè)考點
第一章考點:算法的效率、復(fù)雜度
時間復(fù)雜度:算法的時間量度,用“O(***)”表示
空間復(fù)雜度:算法所需存儲空間的量度
主要考題,計算某某語句的執(zhí)行次數(shù)(主要是循環(huán)體)。
方法:
1、for(i=x;i<n;i++){a}   
a語句執(zhí)行了n-x次,注意循環(huán)條件中沒有等于號
2、for(i=x;i<=n;i++){a}
a語句執(zhí)行了n-x+1次,注意循環(huán)條件中有等于號,有等號就+1
3for(i=x;i<n;i++)
for(j=y;j<=m;j++){a}
a語句執(zhí)行了(n-x)(m-y+1)次,嵌套循環(huán)時,要算兩者的乘積(前提是兩個循環(huán)的循環(huán)變量無瓜葛)
例題:
1、在下面的程序段的時間復(fù)雜度為(    )【北京工商大學 2001 一、103分)煥楠修改版】
for(i=1;i<n;i++)
for(j=1;j<=n;j++)
      x=x+1;
A O(2n)       BO(n)       CO(n2)         DO(log2n)  
答案:C
解釋:先算x=x+1;語句執(zhí)行的次數(shù)為次,取最高次項。其實這題直接目測都可以啦,很簡單吧親!
2、計算機執(zhí)行下面的語句時,語句s的執(zhí)行次數(shù)為 _______ !灸暇├砉ご髮W2000二、11.5分)】
  for(i=li<n-li++)
     for(j=n;j>=i;j--)
     s;
答案:
解釋:顯然,兩個循環(huán)的循環(huán)變量是有瓜葛滴!根據(jù)楠妹第二定律,只能慢慢推導(dǎo)咯!
              
  
  
  
  
  
                                       
  
  
A2
  
  
A1
  
              
  
  
  
  
  
   新元素                                   
  
  
A2
  
  
A1
  
順序棧的出棧操作:
Status Push(SqStack &S,SElemType &e)     //注意這里為什么要用引用參數(shù),不懂問楠妹哈
{
       if(?)
              return ERROR;
       e=*--S.top;
       return OK;
}
注意:
判斷?盏臈l件是:S.top==S.base
e=*--S.top; 的理解:
先讓棧頂指針指向棧頂元素,然后賦值給e
實質(zhì):先減減,后刪除,因為非空棧的棧頂指針始終指向棧頂元素的下一個位置上
循環(huán)隊列的入隊:
Status EnQueue(SqQueue &Q,QElemType e)
{
       if((Q.rear+1)%MAXQSIZE==Q.front)         //判斷隊列是否滿了
              return ERROR;
       Q.base[Q.rear]=e;                         //e入隊
       Q.rear=(Q.rear+1)%MAXQSIZE;           //防止越界
       return OK;
}
循環(huán)隊列的出隊:
Status DeQueue(SqQueue &Q,QElemType &e)
{
       if(Q.rear==Q.front)                        //判斷隊列是否空
              return ERROR;
       e=Q.base[Q.front];                        //e出隊
       Q.front=(Q.front+1)%MAXQSIZE;           //保證循環(huán)
       return OK;
}
代碼都在 啦,自己背咯 !
第四章考點:串(堆分配內(nèi)存)的 連接、賦值
代碼都在 啦,自己背咯親!
第六章考點:二叉樹的遍歷、赫夫曼編碼
二叉樹的遍歷:(已經(jīng)定好了從左到右,以下僅對先序作說明,其它兩種自己推導(dǎo)啦親,嘻嘻。
理解的關(guān)鍵是:遞歸的思想
先序(先訪問根)
                                
  
  
  
  
  
  
  
63
  
  
  
  
20
  
  
96
  
  
  
  
  
  
54
  
  
  
  
  
  
  
  
  
  
14
  
  
29
  
H(14) = 14 mod 15 = 14
H(20) = 5
H(63) = 3
H(96) = 6
H(29) = 14 H1= (14+1)mod 16 = 15
H(54) = 9
平均查找長度  ASL=(1*5 + 2*1)/6 =7/6
注意:
平均查找長度的計算, ,記住公式啦, O(∩_∩)O~~
本題的關(guān)鍵是 線性探測再散列方法的使用
說明:
i為沖突的次數(shù),每一次的key都是第一次算出來那個喲!
          
  
21
  
  
56
  
  
23
  
  
77
  
  
21
  
2、2156比較,21小于56,21取代56的位置,記錄全部后移
          
  
  
  
21
  
  
56
  
  
23
  
  
77
  
  • 取出77,放入哨兵位置


          
  
77
  
  
21
  
  
56
  
  
23
  
  
77
  
5、7721比較,77大于217756比較,77大于56,7723比較,77大于23,7777比較,77等于77,故77留在原來位置  
6、取出23,放入哨兵位置
          
  
23
  
  
21
  
  
56
  
  
23
  
  
77
  
7、2321比較,23大于21,2356比較,23小于56,23取代56的位置,記錄全部后移
          
  
  
  
21
  
  
23
  
  
56
  
  
77
  
  • 取出56,放入哨兵位置


          
  
56
  
  
21
  
  
23
  
  
56
  
  
77
  
10、5621比較,56大于21,5623比較,56大于23,5656比較,56等于56,故56留在原來位置
11、因此,最終的排序為:
        
  
21
  
  
23
  
  
56
  
  
77
  
共比較10
注:
冒泡法的時間復(fù)雜度為:        
快速排序法的時間復(fù)雜度為:   
直接插入排序的時間復(fù)雜度為:
可見,快速排序法,全球公認最快的排序法。專業(yè)排序30年,不要兩三百,不要四五百,只要998,對,你沒聽錯,只要998!你就可以擁有全球最快的排序法!趕快拿錢給楠妹吧,嘻嘻。。。ǖ遣环(wěn)定……嗚嗚嗚~~~~(>_<)~~~~
終于寫完啦,寫了五個小時呀,嗚嗚。!認真看哦,(o)哦,(o)哦,(o)哦。。。。親!不認真看的,打死你打死你打死你,哼哼哼哼。!
要說再見了,不舍得呀!!嗚嗚嗚嗚嗚嗚嗚。!O__O”   ~~~~(>_<)~~~~!。!
201466日星期五
于廣東某供熱大學某實驗室






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1