数据结构(二)——算法

算法:完成特定任务的一个过程,通常使用数据结构作为工具,辅助算法。程序 = 算法 + 数据结构。算法本身不是数学,只是可以用算法描述。可以用代码实现算法、也可以用别的来表示算法,自然语言、流程图、伪代码等
衡量算法的好坏:
常见算法:排序算法、贪婪算法、推荐算法

算法的特征:
1.有穷性
2.确切性
3.必须有输入项(有0个或多个输入项)0输入项说明算法本身给了一个初始值
4.至少有一个输出项
5.可行性(针对密码破解)

算法的考量:
1.时间复杂度 越少越好
2.空间复杂度 越少越好
3.正确性
4.可读性
5.健壮性

基本算法:
排序算法:冒泡排序 快速排序 堆排序 归并排序
查找算法:二分查找 线性查找
遍历树算法:深度优先算法、广度优先算法
特定场景算法:动态归类算法、贝叶斯分类算法、压缩算法、加密算法、图形渲染算法、推广算法

排序算法:
冒泡排序法:时间复杂度比较高、空间复杂度比较低,且比较稳定每次结果都一致。

查找算法
顺序查找、二分查找、分块查找、散列表

顺序查找:数组中的查找,挨个遍历
二分查找:数组当中的值必须是事先排好序的,先找中间位置的比较大小。先对比9,因为9比15小,然后查找9往后的继续进行二分

分块查找:使用在数据量非常大的情况下,需要对数据进行排序、分类,根据数值判断需要在哪一块查找,然后在用较快速的方法在该里面查找
依赖散列表查找:需要建立索引,常用在数据库。

常见算法:
压缩算法,数据量增长的数据大于硬件增长的速度,节约内存,节约网络带宽。数据的大小,决定数据传输的时间。可以减少带宽的消耗,提升传输速度。
为什么可以被压缩。原理,对重复数据进行压缩处理。压缩算法底层就是哈弗曼树。
渲染算法:
加密算法:明文、密文、密码、秘钥
对称加密算法、非对称加密算法
人工智能算法:从新兴起,是因为硬件可以达到算法所需要的支持。