赞
踩
与408的关联:1. 逻辑结构和存储结构在选择题中会有涉及。2. 时间复杂度几乎是每一年大题必考内容!
1. 顺序存储
- int Array[6] = {1,2,3,4,5,6};//定义数组并初始化
- prinf("%d\n",Array[3]);//随机访问第4个元素
2. 链式存储
- typedef struct Lnode{
- ElemType data;
- struct Lnode *next;
- }Lnode,*LinkList;
- Lnode *L;
- L = (LinkList)malloc(sizeof(Lnode));
- A -> next = B;
- B -> next = C;
优点:
顺序存储:
链式存储:
充分利用所有单元空间,不会出现碎片现象。
缺点:
顺序存储:
只能使用整块的存储单元,会产出较多的碎片。
链式存储:
- int sum = 0; //执行一次
- sum = n * (n +1)/2; //执行一次
- printf("%d",sum); //执行一次
算法的执行次数等于3。时间复杂度T(N)=O(1),表示不会随n的增长而增长。
- int x = 2;
- while(x < n / 2){
- x = 2 * x;
- }
执行频率最高的语句为“x = 2 * x;” 设该语句共执行了t次,则2^(t+1) < n/2,故t = log₂(n/2)-1= log₂n-2; 时间复杂度T(n)=O(log₂n)
- int i,x = 2;
- for(i = 0;i < n;i++){
- x = 0;
- while(x < n / 2)
- x = 2 * x;
- }
执行频率最高的语句为“x = 2 * x;” 设该语句内层循环执行了log₂n次,外层执行了n次; 时间复杂度T(n)=O(nlog₂n)
- int sum1 = 0,sum2 = 0,i,j;
- for(i = 0;i < n;i++)
- sum1 = sum1 + i;
- for(j = 0;j < m;j++)
- sum2 = sum2 + j;
- printf("%d,%d",sum1,sum2)
两个循环没有嵌套,串行执行。所以时间复杂度T(n) = O(n)+O(m);取最大的,即时间复杂度T(n) = max(O(n)+O(m))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。