标题: 数据结构复习v3.0_电信二班_焕楠 [打印本页]

作者: bibi    时间: 2015-4-19 01:41
标题: 数据结构复习v3.0_电信二班_焕楠
                                 
电子信息工程132)班 吴焕楠
欢迎加QQ1435378192相互学习
欢迎加入学霸交流群293194287
全文用楠妹的口吻编写,为了增加趣味性
新版特性:追加楠妹语言,以及部分代码。
感谢电信1班泽锐提出的错误(冒泡法那里)
注:仅列出电信专业考点
第一章考点:算法的效率、复杂度
时间复杂度:算法的时间量度,用“O(***)”表示
空间复杂度:算法所需存储空间的量度
主要考题,计算某某语句的执行次数(主要是循环体)。
方法:
1for(i=x;i<n;i++){a}   
a语句执行了n-x次,注意循环条件中没有等于号
2for(i=x;i<=n;i++){a}
a语句执行了n-x+1次,注意循环条件中有等于号,有等号就+1
3for(i=x;i<n;i++)
for(j=y;j<=m;j++){a}
a语句执行了(n-x)(m-y+1)次,嵌套循环时,要算两者的乘积(前提是两个循环的循环变量无瓜葛)
例题:
1、在下面的程序段的时间复杂度为(    )【北京工商大学 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;语句执行的次数为次,取最高次项。其实这题直接目测都可以啦,很简单吧亲!
2、计算机执行下面的语句时,语句s的执行次数为 _______ 。【南京理工大学2000二、11.5分)】
  for(i=li<n-li++)
     for(j=n;j>=i;j--)
     s;
答案:
解释:显然,两个循环的循环变量是有瓜葛滴!根据楠妹第二定律,只能慢慢推导咯!
              
  
  
  
  
  
                                       
  
  
A2
  
  
A1
  
              
  
  
  
  
  
   新元素                                   
  
  
A2
  
  
A1
  
顺序栈的出栈操作:
Status Push(SqStack &S,SElemType &e)     //注意这里为什么要用引用参数,不懂问楠妹哈
{
       if(栈空)
              return ERROR;
       e=*--S.top;
       return OK;
}
注意:
判断栈空的条件是:S.top==S.base
e=*--S.top; 的理解:
先让栈顶指针指向栈顶元素,然后赋值给e
实质:先减减,后删除,因为非空栈的栈顶指针始终指向栈顶元素的下一个位置上
循环队列的入队:
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;
}
循环队列的出队:
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;           //保证循环
       return OK;
}
代码都在 啦,自己背咯
第四章考点:串(堆分配内存)的 连接、赋值
代码都在 啦,自己背咯亲
第六章考点:二叉树的遍历、赫夫曼编码
二叉树的遍历:(已经定好了从左到右,以下仅对先序作说明,其它两种自己推导啦亲,嘻嘻!)
理解的关键是:递归的思想
先序(先访问根)
                                
  
  
  
  
  
  
  
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~~
本题的关键是 线性探测再散列方法的使用
说明:
i为冲突的次数,每一次的key都是第一次算出来那个哟
          
  
21
  
  
56
  
  
23
  
  
77
  
  
21
  
22156比较,21小于5621取代56的位置,记录全部后移
          
  
  
  
21
  
  
56
  
  
23
  
  
77
  
          
  
77
  
  
21
  
  
56
  
  
23
  
  
77
  
57721比较,77大于217756比较,77大于567723比较,77大于237777比较,77等于77,故77留在原来位置  
6、取出23,放入哨兵位置
          
  
23
  
  
21
  
  
56
  
  
23
  
  
77
  
72321比较,23大于212356比较,23小于5623取代56的位置,记录全部后移
          
  
  
  
21
  
  
23
  
  
56
  
  
77
  
          
  
56
  
  
21
  
  
23
  
  
56
  
  
77
  
105621比较,56大于215623比较,56大于235656比较,56等于56,故56留在原来位置
11、因此,最终的排序为:
        
  
21
  
  
23
  
  
56
  
  
77
  
共比较10
注:
冒泡法的时间复杂度为:        
快速排序法的时间复杂度为:   
直接插入排序的时间复杂度为:
可见,快速排序法,全球公认最快的排序法。专业排序30年,不要两三百,不要四五百,只要998,对,你没听错,只要998!你就可以拥有全球最快的排序法!赶快拿钱给楠妹吧,嘻嘻!!!(但是不稳定……呜呜呜~~~~(>_<)~~~~
终于写完啦,写了五个小时呀,呜呜!!!认真看哦,(o)哦,(o)哦,(o)哦。。。。亲!不认真看的,打死你打死你打死你,哼哼哼哼!!!
要说再见了,不舍得呀!!!呜呜呜呜呜呜呜!!!O__O”   ~~~~(>_<)~~~~!!!!
201466日星期五
于广东某供热大学某实验室






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1