数据结构(1)—— 程序性能分析

目录

 

1 什么是程序性能

2 空间复杂度

2.1 空间复杂度的组成

3 时间复杂度

3.1 时间复杂度的组成


1 什么是程序性能

所谓程序性能(performance of a program)是指运行这个程序所需要的内存和时间的多少。

一个程序的空间复杂度(space complexity)是指该程序的运行所需内存的大小。

一个程序的时间复杂度(time complexituy)是指运行程序所需要的时间。

 

2 空间复杂度

2.1 空间复杂度的组成

程序所需要的空间主要由以下部分构成:

(1)指令空间:指编译之后的程序指令所需要的存储空间。

         指令空间的数量取决于如下因素:

  •   把程序转换成机器代的编译器
  •   在编译时的编译器选项
  •   目标计算机

(2)数据空间:指所有常量和变量值所需要的存储空间。

         它由两个部分构成:

  •   常量和简单变量所需要的存储空间。
  •   动态数组和动态类实例等动态对象所需要的空间。
C++数据类型通常占用的空间
类型32位系统中(字节数 Byte)64位系统中(字节数 Byte)范围
bool11{true, false}
char11[-128, 127]
usigned char11[0, 255]
short22[-32768, 32767]
usigned short22[0, 65535]
long48[–2147483648,  2147483647]
usigned long48[0, 4294967295]
int44[–2147483648,  2147483647]
usigned int44[0, 4294967295]
float44±3.4E±38(7位)
double88±1.7E±308(15位)
pointer48

 

 

(3)环境栈空间:用来保存暂停的函数和方法在恢复运行时所需要的信息。

         每当一个函数被调用时,下面的数据被保存在环境栈中:

  •   返回地址
  •   正在调用的函数的所有局部变量的值以及形式参数的值(仅对递归函数而言)。

实例特征:程序要处理的问题实例都有一些特征,这些特征都包含着可以决定程序空间的因素(例如,输入和输出的数量或相关数的大小)。

 

3 时间复杂度

3.1 时间复杂度的组成

一个程序P所需要的时间是编译时间和运行时间之和。编译时间与实例特征无关。运行时间通常用“t(p)(实例特征)”来表示。

(1)操作计数:选择一种或多种关键操作,然后确定每一种操作的执行次数。

 

(2)最好、最坏和平均操作计数:操作计数不总是由实例特征唯一确定时,可以估算最好、最坏和平均操作计数进行分析。

 

(3)步数:一个程序步可以大概定义为一个语法或语义上的程序片段,该程序片段独立于实例特征。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据结构是计算机科学中研究数据组织、存储和管理方式的一门学科。它关注如何高效地组织和使用数据,以及设计和实现相关的算法。数据结构是计算机程序的基础,它能够影响程序的性能和效率。 C语言是一种功能强大的编程语言,广泛应用于系统级编程和嵌入式系统开发。由于其底层语言特性和灵活的语法,C语言非常适合于处理和操作数据结构。 C语言提供了针对数据结构的一些基本概念和操作方式。例如,可以使用结构体来定义自定义的数据类型,结构体可以包含多个不同类型的变量。这种方式可以用来表示和组织复杂的数据结构,比如链表、树等。 此外,C语言还提供了一些对数据结构进行操作的函数和库。例如,可以使用指针来操作链表和树等数据结构,通过指针的灵活性,能够高效地进行数据的插入、删除和查找等操作。 在程序设计中,数据结构的选择和设计是非常重要的。不同的数据结构适用于不同的场景和问题。在使用C语言进行程序设计时,我们需要根据实际需求选择合适的数据结构,并合理设计和实现相应的算法,以提高程序的性能和效率。 总结而言,数据结构与程序设计是密切相关的。C语言提供了丰富的功能和灵活的语法,使得我们能够方便地处理和操作各种数据结构。通过合理的数据结构选择和算法设计,我们能够编写出高效、可靠的程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值