摘要: 深度优先遍历过程1、图的遍历 和树的遍历类似,图的遍历也是从某个顶点出发,沿着某条搜索路径对图中每个顶点各做一次且仅做一次访问。它是许多图的算法的基础。 深度优先遍历和广度优先遍历是最为重要的两种遍历图的方法。它们对无向图和有向图均适用。 注意: 以下假定遍历过程中访问顶点的操作是简单地输出顶点。2、布尔向量visited[0..n-1]的设置 图中任一顶点都可能和其它顶点相邻接。在访问了某顶点之后,又可能顺着某条回路又回到了该顶点。为了避免重复访问同一个顶点,必须记住每个已访问的顶点。为此,可设一布尔向量visited[0..n-1],其初值为假,一旦访问了顶点Vi之后,便将visited[ 阅读全文
posted @ 2010-05-31 22:56 张长胜 阅读(352) 评论(0) 推荐(0) 编辑
摘要: 二分排序/* 二分查找 * 算法思想:1、将数组排序(从小到大);2、每次跟中间的数mid比较,如果相等可以直接返回, * 如果比mid大则继续查找大的一边,否则继续查找小的一边。 输入:排序好的数组 - sSource[],数组大小 - array_size,查找的值 - key 返回:找到返回相应的位置,否则返回-1 */ int BinSearch(int sSource[], int array_size, int key) { int low = 0, high = array_size - 1, mid; while (low <= high) { mid = (lo... 阅读全文
posted @ 2010-05-31 22:50 张长胜 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 排序算法总结1.插入排序一般来说,插入排序 都采用in-place在数组上实现。具体算法描述如下:从第一个元素开始,该元素可以认为已经被排序取出下一个元素,在已经排序的元素序列中从后向前扫描如果该元素(已排序)大于新元素,将该元素移到下一位置重复步骤3,直到找到已排序的元素小于或者等于新元素的位置将新元素插入到该位置中重复步骤2如果比较操作 的代价比交换操作 大的话,可以采用二分查找法 来减少比较操作 的数目。该算法可以认为是插入排序 的一个变种,称为二分查找排序 。上代码:view plaincopy to clipboardprint?void insertsort(int array[] 阅读全文
posted @ 2010-05-31 15:02 张长胜 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 常见排序算法的稳定性分析和结论这几天笔试了好几次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目,当然如果你笔试之前已经记住了数据结构书上哪些是稳定的,哪些不是稳定的,做起来应该可以轻松搞定。本文是针对老是记不住这个或者想真正明白到底为什么是稳定或者不稳定的人准备的。 首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj, Ai原来在位置前,排序后Ai还是要在Aj位置前。 其次,说一下稳定性的好处。排序.. 阅读全文
posted @ 2010-05-31 12:26 张长胜 阅读(149) 评论(0) 推荐(0) 编辑