标签:main 变量类型 UNC 逻辑 语言 最大 表达 The cloc
前情提要:
蒟蒻于2019-1-29开始学习数据结构,开此系列作为学习后的整理。
当然,蒟蒻的学习主要还是来自[MOOC](https://www.icourse163.org/?from=study)上的数据结构一课
数据结构没有标准定义(相关定义网上有很多),但它与算法有着密切联系
在听课后,主要通过三个例子,讲了三个简单结论:
关于数据对象组织方式:
- 物理结构
- 逻辑结构
数据结构可以用抽象数据类型来描述
数据类型:
抽象:
1. 与存放数据的机器无关
1. 与数据存储的物理结构无关
1. 与实现操作的算法和编程语言均无关
只描述数据对象集和相关操作集**“是什么”**,而不涉及**如何做到**的问题
举个栗子:
矩阵抽象数据类型定义:
类型名称:
矩阵
数据对象集:
一个M*N的矩阵由M*N个三元组< a , i , j >构成, a 为矩阵元素的值, i 为元素所在行号, j 为元素所在列号
操作集:
在上述数据类型中,我们只要知道矩阵和相关操作集,矩阵可以按什么类型存储(二维数组?一维数组?十字链表?),矩阵元素的类型ElementType(int?char?bool?),操作的实现(最后两个操作是按行加?按列加?什么语言?)等等具体实现没有限制
补充:
秦九韶算法:
针对任何一个一元多项式,都可以写成:
f(x)=a[0]+a[1]x+...+a[n-1]x^n-1+a[n]x^n
最直接的办法是根据多项式的标准表达式
f(x)=∑ n<---i=0 a[i]x[i]循环累计求和得到结果
而秦九韶算法计算时:f(x) = a0 + x( a1 + x(...( a[n - 1] + x ( a [n] ) )... ) )
#### clock()工具的使用:
引申两个概念:
clock():捕捉从程序开始运行到clock()被调用时所耗费的时间。这个 时间单位是clock tick,即“时钟打点”。
常数CLK_TCK(或CLOCKS_PER_SEC):机器时钟每秒所走的时钟打点数。
程序实现:
#include <stdio.h> #include <time.h> clock_t start, stop; /* clock_t是clock()函数返回的变量类型 */ double duration; /* 记录被测函数运行时间,以秒为单位 */ int main () { /* 不在测试范围内的准备工作写在clock()调用之前*/ start = clock();/* 开始计时 */ MyFunction();/* 把被测函数加在这里 */ stop = clock();/* 停止计时 */ duration = ((double)(stop - start))/CLK_TCK; /* 计算运行时间 */ /* 其他不在测试范围的处理写在后面,例如输出duration的值 */ return 0; }
算法(algorithm)
衡量一个算法——算法复杂度:
根据算法写成的程序在执行时占用存储单元的长度。空间复杂度过高的算法可能导致使用的内存超限,造成程序非正常中断
复杂度的渐进表示法:
复杂度分析小窍门:
若两段算法分别有复杂度T1(n) = O(f1(n)) 和T2(n) = O(f2(n)),则:
以上是蒟蒻搬到cnblog的第一篇博客(为什么cnblog不用markdown呢?)
标签:main 变量类型 UNC 逻辑 语言 最大 表达 The cloc
原文地址:https://www.cnblogs.com/wyctstf/p/10543784.html