数据结构——绪论2

数据结构——绪论2

文章目录

  • 数据结构——绪论2
  • 一、算法
    • (一)算法是什么?
    • (二)算法特征是什么?
    • (三)算法设计原则是什么?
    • (四)高效率和低存储
  • 二、算法效率的衡量标准
    • (一)事后分析法
    • (二)事前分析法
    • (三)衡量标准


一、算法

(一)算法是什么?

1.解决问题的策略;
2.策略施加在数据结构的数据上。
(策略:一个有限长度可执行的指令序列)

(二)算法特征是什么?

1.有穷性:
(1)优先步骤内;
(2)有限时间内。
2.确定性:
(1)算法的每种情况都有确定的规定;
(2)算法的执行者和阅读者不产生二义性;
(3)每种情况只有唯一的解决路径。
3.可行性:
(1)算法每个操作都可运行(基本操作);
(2)基本操作通过已实现的运算操作,在有限时间内可实现。
4.输入:每个算法必须有输入(包括显性输入和隐性输入(初始化))。
5.输出:每个算法必须有输出。
数据结构——绪论2_第1张图片

(三)算法设计原则是什么?

1.正确性:
(1)满足需求规格说明(功能、性能、安全性、完整性、界面、环境);
(2)无语法错误;
(3)输入的数据输出满意的结果==(合法数据得到正确结果,非法数据得到应有的反馈)==;
(4)经过任何典型的、经典的、苛刻的数据都能得到满意结果;
(5)一切合法数据得到正确结果。
2.可读性:
(1)易于人的理解——加注释(序言式,功能性);
(2)易于发现隐藏的错误。
3.健壮性(鲁棒性):
(1)针对非法数据;
(2)输入非法数据算法不可中断并且可以得到应有的反馈;
(3)返回一个错误信息或者错误值。

(四)高效率和低存储

1.高效率:
(1)算法执行时间短;
(2)数据结构简单,算法高效。
2.低存储:尽可能的降低存储空间。

二、算法效率的衡量标准

(一)事后分析法

1.必须先执行;
2.因为一些非算法的因素,掩盖算法可能存在的问题。

(二)事前分析法

影响算法效率的因素:
1.算法策略
2.问题规模
3.采用的语言
4.编译器以及编译出的机器代码
5.机器指令执行效率(CPU)

(三)衡量标准

1.依赖于问题的规模
2.用问题规模函数 O(f(n))

1.时间复杂度
(1)准则:计算算法的重复执行次数
(2)如何估算算法的执行次数

//①顺序结构
t=x;
x=y;
t=t;//运行三次,O(1)
//②选择结构
if(!(x-3)){
...
}else{
...
}//运行4次,O(1)
//③循环结构
int i ,sum=0;
for(i=1;i<101;++i){
   sum+=i;
}
printf("%d\n",sum);
______________________
//改写成goto语句:
       int i,sum=0;            //1'
       i=1;                    //1'
fan1:  if(i==101) goto fan2;   //101'——>n'
       sum+=i;                 //101'——>n'
       ++i;                    //101'——>n'
       goto fan1;              //101'——>n'
fan2:  printf("%d\n",sum);     //1'
//次数为4n+5次,O(n);

2.空间复杂度
(1)作用:衡量算法的存储需求。
(2)包括:

        ①输入数据所占空间
        ②程序本身所占空间 (X)
        ③辅助变量所占空间 ()

注意:

①若输入数据所占空间只与问题本身有关,与算法无关,那么只考虑辅助变量空间;
②原地工作:若所需空间,相对于属于数据是一个常量,那么可称为原地工作;
③若所需要的存储量依赖于特定输入,就按最差的情况考虑。

你可能感兴趣的:(408学习笔记,数据结构)