数据结构——1、基本概念

1、例子1

写程序实现一个函数PrintN,使得传入一个正整数为N的参数后,能顺序打印从1到N的全部正整数

  1. 循环实现
    在这里插入图片描述
  2. 递归实现
    在这里插入图片描述
  3. 测试时间
    有一个问题,应该怎么跑这个程序呢?让这里面的N从100,1000,10000…一直往下跑
    可以写一个测试代码,先读进来一个N,然后以N为参数去调用这个PrintN函数

2、例子2

写程序计算给定多项式在给定点x处的值
在这里插入图片描述
分析知函数的参数需ixh要存储多项式系数的数组、多项式的最高次方数以及输入的给定点x

  1. 方法1
    在这里插入图片描述
  2. 方法2
    对多项式进行整理,变为如下形式
    在这里插入图片描述
    在这里插入图片描述

3、测试程序运行时间

使用clock()函数返回值类型为clock_t需要包含头文件<time.h>
常数CLK_TCK是指机器始终每秒走的时钟打点数,duration单位为秒
而函数可能跑的太快了,时间可能都不到一个tick,办法是
让被测函数重复运行充分多次,是的测出的总的时间充分长,最后计算平均运行时间
在这里插入图片描述

4、什么是数据结构

  • 数据结构是数据对象在计算机中的组织方式(逻辑结构、物理存储结构
  • 数据对象必定与一系列加在其上的操作相关联,完成这些操作所用的方法就是算法

5、抽象数据类型

一个是 数据对象集 ,另一个是 数据集合相关联的操作集
在C语言中,它们是独立处理的。而对面向对象的语言来说,它们就为这个数据类型专门设计了这样的机制(类),把这个数据集跟和它相关的操作封装在一个类里面
那么,抽象的好处是什么呢?
当抽象时,就可以不用考虑具体的类型、存储方式或实现方式等,不用去具体考虑到程序中的一些细节问题

6、衡量算法好坏的指标

空间复杂度S(n)——根据算法写成的程序在执行时占用存储单元的长度。这个长度往往和输入数据的规模有关。空间复杂度过高的算法可能导致使用的内存超限,造成程序中断
时间复杂度T(n)——根据算法写成的程序在执行时耗费时间的长度。这个长度往往也与输入数据的规模有关。所以都写为关于n的函数。
在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/CSDN_dzh/article/details/83410504