【C# 数据结构】 开篇

大纲

 

算法时间复杂度

C# 中的数据结构

 

 

时间复杂度

让算法先运行,事后统计运行时间?
存在什么问题?
·和机器性能有关,如:超级计算机v.s.单片机
和编程语言有关,越高级的语言执行效率越低
和编译程序产生的机器指令质量有关
·有些算法是不能事后再统计的,如:导弹控制算法

算法时间复杂度
事前预估算法时间开销T(n)与问题规模n的关系(T表示“time”)

问题1:是否可以忽略表达式某些部分?
时间开销与问题规模n的关系:
T1(n)=3n+3
T(n)=n2+3n+1000
T3(n)=n3+n2+9999999

只保留算法的高阶部分

时间复杂度低到高

 

 

 

如何计算算法复杂度

 

 

 

 

 

 

 算法一般情况只关注 最坏和平均复杂度

 √最坏时间复杂度:最坏情况下算法的时间复杂度
√平均时间复杂度:所有输入示例等概率出现的情况下,算法的期望运行时间
×最好时间复杂度:最好情况下算法的时间复杂度

 空间复杂度

 

 

逻辑结构:

1.集合结构:数据元素之间没有任何关系.
2.线性结构:数据元素之间定义了线性关系.1对1
3.树形结构:数据元素之间定义了层次关系 1对多.
4.图状结构:数据元素之间定义了网状关系 多对多.

 数据存储结构:

1.顺序存储结构:借助数据元素之间的相对位置来表示元素之间的逻辑结构.(vector动态数组、 deque双端队列、stack栈容器、queue队列容器)
2.链式存储结构:借助数据元素之间的元素的指针表示数组元素的逻辑结构.
3.散列存储结构:顺序存储+算列.
4.索引存储结构:顺序存储+索引.

posted @ 2022-05-07 23:51  小林野夫  阅读(96)  评论(0编辑  收藏  举报
原文链接:https://www.cnblogs.com/cdaniu/