数据结构和算法
- CMDB项目 (****)
- 数据分析
- 数据结构和算法 (****)
数据结构和算法地位:
- 操作系统
- 计算机组成原理
- 网络系统
- 软件工程
- 数据结构和算法 (考研必考)
数据结构和算法是计算结科学领域非常核心的一门课程。
程序 = 数据结构 + 算法
学习时长
- 算法
- 排序算法
- 冒泡排序 (**)
- 选择排序
- 插入排序
- 快速排序 (**)
- 希尔排序
- 计数排序
- 查找
- 数据结构
- 线性结构
- 数组 (列表)
- 链表 (约瑟夫,丢手绢问题)
- 线性结构的应用
- 非线性结构
- 树
- 一般树
- 二叉树
- 森林
- mysql的索引:B+树 不是二叉树
- 图
总结:这两天的内容,你学完之后,做出有用的东西。主要学习的是思考的问题的方式,方法。就像练功的人练内功一样。内功不好 ,学其他的东西非常的费劲。如果听不懂的话,很正常。但是大家千万不要放弃,每天要不断的去思考,说不定哪一天就像明白了。
算法衡量的标准
1.时间复杂度,重点
问: 比如说,现在有两个程序,这两个程序的运行时间如何衡量?
答:用time模块判断,time.time() 来进行计算
上述的计算方式,前提是:两段程序必须运行在同一个硬件相同(CPU,内存)的环境下运行,才有意义。
因此,我们使用时间差的方式来衡量一个程序是否快慢没有任何的意义。所以,使用程序执行的大概次数来衡量程序的执行快慢,把这种衡量的方式称之为时间复杂度,使用O()来记
如何一眼判断时间复杂度?
- 循环减半的过程?O(logn)
- 几次循环就是n的几次方的复杂度
2.空间复杂度
这段程序运行的过程中,是否占用了内存空间。
微博,用redis。196G内存
常见的排序算法
- 算法
- 排序算法
- 冒泡排序 (**)
- 选择排序
- 插入排序
- 快速排序 (**)
- 希尔排序
- 桶排序 ---》 计数排序
- 动态规划 贪心(分糖果,人民币问题) 背包问题
- 查找
博客地址:
http://lupython.gitee.io/
https://visualgo.net/zh
数据结构
-
线性结构
就是能够用一根线串起来的数据结构
- 数组 (列表)
- 问:申请数组的前提条件是啥? a[12]?内存需要满足的条件?
- 答:内存必须有一块连续的内存空间
- int a[7] : 声明一个数组,这个数组的数组名是 a, 数组的大小是 7, 数组元素的类型是整型。 int a[7] = array(1,2,3,4,5,6,7)
- 问:如何申请内存?
- 答:C,C++语言,申请:mallco (28)。释放:free(28)
- 问:int a[7] = [1,2,3,4,5,6,7] a[3] = 4?
- 答:a[3] = 首地址(1000) + 索引(3) * 类型长度(4) = 1012 --- 1015
- 问:数组首地址从哪获取?
- 答:数组首地址保存在数组名中
- 列表中的增(append)删(pop)改(update)查(for)
- 链表 (约瑟夫,丢手绢问题)
- 线性结构的应用
-
非线性结构
算法与数据结构的介绍
原文:https://www.cnblogs.com/yafeng666/p/12663769.html