程序员须知的基础算法整理

算法一:快速排序算法

http://blog.csdn.net/v_july_v/article/details/6116297

分治处理:选主元将一组数分为2组,一组都比主元小,另一组都比主元大;然后递归上述方法即对每个组分别用新主元排序再分成新的组,如此递归到排序结束。

算法二:堆排序算法

http://www.cricode.com/977.html

http://blog.csdn.net/morewindows/article/details/6709644

构造大顶堆和小顶堆,利用堆顶是最大和最小元素的特性,将最值和最后一个元素交换,最后一个元素就变为了有序元素;再调整无序元素堆,重复交换到无序元素堆得最后一个元素,依次生成所有有序元素。

算法三:归并排序

http://www.cricode.com/1333.html

算法四:二分查找算法

用于有序数组查找特定元素:与数组中间值比较,不停二分迭代得到结果,时间复杂度为Ο(logn)

算法五:BFPRT(线性查找算法)

http://blog.csdn.net/v_JULY_v/article/details/6370650

算法六:DFS(深度优先搜索)

 http://www.cnblogs.com/skywang12345/p/3711483.html

算法七:BFS(广度优先搜索)

2种搜索顾名思义,关键看图。

算法八:Dijkstra算法

http://www.cnblogs.com/skywang12345/p/3711512.html

最短路径实现:引进两个集合S和U。S的作用是记录已求出最短路径的顶点(以及相应的最短路径长度),而U则是记录还未求出最短路径的顶点(以及该顶点到起点s的距离)。

算法九:动态规划算法

 http://www.hawstein.com/posts/dp-novice-to-advanced.html

找到递推公式算最优解,类似归纳演绎;推算N个状态,找到更一般的递推公式。

算法十:朴素贝叶斯分类算法

朴素:假设条件独立。

分类:求最大条件概率,也可最大似然。

现代贝叶斯:层次贝叶斯,因素的因素,条件还有其他条件约束。

原文地址:https://www.cnblogs.com/chenzhefan/p/4643729.html