常见算法:
1.冒泡排序(FFI)
特点:相邻数字依次进行比较和调整,较大的往下沉,较小的上冒 (FFI)
2.选择排序(FFI)
特点:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
2.快速排序(3W)
特点:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列
3.二分法(W3F)
特点:必须要为有序的数组
方法论
1.很多算法都可以通过递归和循环两种方式实现。
通常基于递归的实现算法代码会比较简洁,但性能不如基于循环的实现算法。
2.通常排序与查找是面试考察算法的重点。
重点掌握冒泡排序,快速排序,二分法查找
3.如果面试要求在二数组(具体表现为迷宫或者棋盘)上搜索路径,那么我们可以尝试使用回溯法。
通常回溯法很适合用递归的代码实现,如果不允许,可以考虑用栈来模拟递归的过程
4.如果面试题是求某个问题的最优解,并且该问题可以分为多个子问题,那么我们可以尝试用动态规划。在使用自上而下的递归思想去分析动态规划问的时候,我们会发现重叠的更小的子问题,为了避免不必要的重复代码,我们用自上而下的循环代码来实现
如果提示说分解子问题的时候是不是存在特殊的选择,如果选择特殊的选择将一定会得到最优解,说明可能适用贪婪算法;