1、第三章 蛮力法1. 选择排序 SelectionSort(A0n-1)for i=0 to n-2 domin=ifor j=i+1 to n-1 doif Aj 1copy A0n/2-1 to B0n/2-1 copy An/2n-1 to C0n/2-1MergeSort( B )MergeSort( C )Merge( B,C,A ) 两个数组合并的算法算法 Merge(B0p-1,C0q-1,A0p+q-1)/将两个有序数组合并成一个有序的数组/输入:两个有序数组 B0.p-1和 C0.q-1/输出:A0p+q-1中已经有序存放了 B 和C 中的元素i=0,j=0,k=0;while
2、 i temp doAj+1 Ajj j 1Aj+1 temp深度优先查找算法 BFS(G )/实现给定图的深度优先查找遍历/输入:图 G=/输出:图 G 的顶点,按照被 DFS 遍历第一次访问到的先后次序,用连续的整 数标记,将 V 中的每个顶点标记为 0,表示还“未访问”count =0/记录这是第几个访问的节点mark each vertex with 0/标记为 unvisitedfor each vertex v V doif v is marked with 0 dfs(v)dfs(v)/递归访问所有和 v 相连接的未访问顶点,然后按照全局变量 count 的值/根据遇到它们的先后
3、顺序,给它们附上相应的数字count = count + 1mark v with countfor each vertex w adjacent to v doif w is marked with 0 dfs(w)广度优先 BFS(G)/实现给定图的深度优先查找遍历/输入:图 G=/输出:图 G 的顶点,按照被 BFS 遍历第一次访问到的先后次序,用连续的整数标记,将 V 中的每个顶点标记为 0,表示还“未访问”count =0mark each vertex with 0for each vertex v V dobfs(v)bfs(v)/递归访问所有和 v 相连接的未访问顶点,然后按照
4、全局变量 count 的值/根据遇到它们的先后顺序,给它们附上相应的数字count = count + 1mark v with countinitialize queue with vwhile queue is not empty doa = front of queuefor each vertex w adjacent to a doif w is marked with 0 count = count + 1mark w with countadd w to the end of the queueremove a from the front of the queue拓扑排序第六章
5、 变治法Gauss消去法 GaussElimination(A1n, b1n)/ 输入:系数矩阵 A及常数项 b/ 输出:方程组的增广矩阵等价的上三角矩阵for i=1 to n doAin+1 =bifor j= i+1 to n dofor k = i to n+1 doAjk = Ajk Aik*Aji/Aii堆排序 堆排序主要包括两个步骤: 对于给定的数组构造相应的堆。 对所构造的堆执行 n-1 次删除堆 的根结点的操作,把删除得到的结点保存在给定数组中。 1 构造堆的效率是多少? O(n) 2 推排序的效率 O(nlogn)Horner 法则第 7 章 时空权衡计数排序比较计数算法算
6、法 ComparisonCountingSort(A0.n-1)/用比较计数法对数组排序/输入:可排序数组A0.n-1/输出:将 A 中的元素按照升序 排列的数组S0n-1For i=0 to n-1 do counti=0For i=0 to n-2 do For j=i+1 to n-1 doifAiAjCountj=Countj+1Else Counti=Counti+1For i=0 to n-1 do SCounti=AiReturn SC(n)=n(n-1)/2第八章 动态规划WARSHALL 算法 void WARSHALL(m)for (i=1; i n; i+ )for (j1; j n; j+ )if(m j,iT)for (k=1; i n; i+ )m j,k + m i,k; (4) 该算法由邻接矩阵在原矩阵构建传递闭包 WARSHALL 算法的时间复杂 度为 O(n3)。Floyd算法 算法 Floyd(W1n,1n)/ 实现计算完全最短路径的 Floyd 算法/ 输入:图的权重矩阵 W/ 输出:包含最短路径长度的距离矩阵