C#数据结构—查找

一:查找

  1.1 基本概念和术语

  查找(Search)是在数据结构中确定是否存在关键码等于给定关键码的记录的过程。关键码有主关键码和次关键码。主关键码能够唯一区分各个不同的记录,次关键码通常能唯一区分各个不同的记录。以主关键码进行的查找是最经常、也是最主要的查找。 
  查找有静态查找(Static Search)和动态查找(dynamic Search)两种。静态查找是
指只在数据结构里查找是否存在关键码等于给定关键码的记录而不改变数据结构,动态查找是指在查找过程中插入数据结构中不存在的记录,或者从数据结构中删除已存在的记录。 

  衡量查找算法的最主要的标准是平均查找长度(Average Search Length,简称ASL)。平均查找长度是指在查找过程中进行的关键码比较次数的平均值,其 数学定义为:

                                    

  其中,pi是要查找记录的出现概率,ci是查找相应记录需进行的关键码比较次数。

  1.2 静态查找表

  由于静态查找不需要在静态查找表中插入或删除记录,所以,静态查找表的数据结构是线性结构,可以是顺序存储的静态查找表或链式存储的静态查找表。下面采用顺序表作为顺序存储的静态查找表,单链表作为链式存储的静态查找表。 

    1.2.1 顺序查找

  顺序查找(Sequnce Search)又称线性查找(Linear Search),其基本思想是:从静态查找表的一端开始,将给定记录的关键码与表中各记录的关键码逐一比较,若表中存在要查找的记录,则查找成功,并给出该记录在表中的位置;否则,查找失败,,给出失败信息。

    顺序查找的基本操作是关键码的比较,因此,查找表的长度就是查找算法的时间复杂度,即为 O(n)。 

    顺序查找虽然简单,但效率很低,特别是当查找表中的记录很多时更是如此。

    1.2.2 有序表的折半查找

  折半查找(Binary Search)又叫二分查找,其基本思想是:在有序表中,取中间的记录作为比较对象,如果要查找记录的关键码等于中间记录的关键码 ,则查找成功;若要查找记录的关键码小于中间记录的关键码,则在中间记录的左半区继续查找;若要查找记录的关键码大于中间记录的关键码,则在中间记录的右半

区继续查找。不断重复上述查找过程,直到查找成功,或有序表中没有所要查找 的记录,查找失败。

  

  

     






  

猜你喜欢

转载自www.cnblogs.com/SimplePoint/p/9397447.html