程序员须知的基础算法整理
算法一:快速排序算法
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个状态,找到更一般的递推公式。
算法十:朴素贝叶斯分类算法
朴素:假设条件独立。
分类:求最大条件概率,也可最大似然。
现代贝叶斯:层次贝叶斯,因素的因素,条件还有其他条件约束。