2015阿里巴巴实习生笔试题-不懂的问题

☺☺☺☺☺☺☺☺☺

2015阿里巴巴实习生笔试题-不懂的问题_第1张图片

☺☺☺☺☺☺☺☺☺

KMP,字符串匹配算法。

传统的暴力匹配未能利用已匹配部分的信息,效率低下。KMP的核心在于构造状态转换图,可用失配函数表示。
详见 http://blog.csdn.net/chuchus/article/details/29910345

希尔排序

算法先将要排序的一组数按某个增量d分成若干组,每组中记录的下标相差d.对每组中全部元素进行排序,然后再用一个较小的增量对它进行,在每组中再进行排序。当增量减到1时,整个要排序的数被分成一组,排序完成。

冒泡排序

太常见了。

Dijkstra算法

Dijkstra挺厉害的,现在我们很难想象如果函数不能递归该是多么地不方便。而Dijkstra就是当时力排非议引入递归编程思想的。
求最短路算法的思想见下:
原图为G=(V,E),求s到任意顶点的最短路径。辅助数组dist[i]表示当前从源点s到顶点i的最短路径,辅助数组visited[ ]表示集合A。
1.初始化,置dist[i]=graph[s][i],A中只有s点。
2.找到具有最小值的dist[x],x属于V-A。x加入A,更新所有的dist[ y ],y属于V-A。更新步骤为 if(dist[x]+graph[x][y]

快速排序

嵌套加递归的排序思想。最坏时间复杂度 O(n*n),平均复杂度O(n*log(底数:2)(真数:n))
详见http://blog.csdn.net/chuchus/article/details/21822557

floyd算法

不同于Dijkstra算法的另一种最短路算法,是一个经典的动态规划算法。
它是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径问题,时间复杂度为O(N^3),空间复杂度为O(N^2)。

贪心

贪心的主要思想就是用局部的最优解去逼近或达到总体的最优解。Dijkstra算法中的 if(dist[x]+graph[x][y]

你可能感兴趣的:(笔试面试)