(一)、无向图遍历

当用二维数组表示邻接矩阵图的存储结构时,查找每个顶点的邻接点所需时间为O(n2),其中n为图中顶点数。而当以邻接表作图的存储结构时,e为无向图中边的数或有向图中弧的数,深度优先搜索遍历图的时间复杂度为O(n+e) 。


(二)、查找

哈希表和二叉排序树都可以在查找过程中动态创建,属于动态查找表。顺序查找方法按照设定的次序依次与查找表中元素的关键字进行比较,在顺序存储结构和链表结构上都可以实现该查找过程。二分查找需要对中间元素进行快速定位,在链表结构上无法实现。

折半查找(二分法查找)的前提是:必须在顺序存储结构的有序表中进行。

假设查找表存放在数组a的a[1]~a[n]中,且升序,查找关键字值为k。

折半查找的主要步骤如下。

(1)置初始查找范围:low=1,high=n;

(2)求查找范围中间项:mid=[(low+high)/2](即向下取整);

(3)将指定的关键字值k与中间项a[mid].key比较:若相等,查找成功,找到的数据元素为此时mid 指向的位置;若小于,查找范围的指针low不变,高端数据元素指针high更新为mid-1;若大于,查找范围的high不变,低端数据元素指针low更新为mid+1;

(4)重复步骤(2)、(3)直到查找成功或查找范围空(low>high),即查找失败为止。