查找

一、基本概念

(1)查找表

     查找表(Search Table)是由同一類型的數據元素(或記錄)構成的集合算法

(2)查找

     查找(Searching)的定義是:給定一個值K,在含有n個結點的表中找出關鍵字等於給定值K的結點。若找到,則查找成功,返回該結點的信息或該結點在表中的位置;不然查找失敗,返回相關的指示信息。數據結構

二、查找表數據結構表示

(1)動態查找表和靜態查找表

     若在查找的同時對錶作修改操做(如插入和刪除),則相應的表稱之爲動態查找表。不然稱之爲靜態查找表spa

(2)內查找和外查找

     和排序相似,查找也有內查找和外查找之分。若整個查找過程都在內存進行,則稱之爲內查找;反之,若查找過程當中須要訪問外存,則稱之爲外查找code

三、分類

(1)線性表查找

線性表的查找分爲順序表查找(順序查找)、有序表查找(折半查找/二分查找,插值查找,斐波那契查找)、線性索引查找(稠密索引,分塊索引,倒排索引)。
排序

(2)樹查找

樹上的查找包括二叉排序樹查找平衡二叉樹(AVL樹)、多路查找樹(B樹)。
索引

(3)散列表查找

四、平均查找長度ASL

    查找運算的主要操做是關鍵字的比較,因此一般把查找過程當中對關鍵字須要執行的平均比較次數(也稱爲平均查找長度)做爲衡量一個查找算法效率優劣的標準。內存

    平均查找長度ASL(Average Search Length)定義爲:ci

    其中:class

    ①n是結點的個數;效率

    ②Pi是查找第i個結點的機率。若不特別聲明,認爲每一個結點的查找機率相等,即

           pl=p2…=pn=1/n

    ③ci是找到第i個結點所需進行的比較次數。

    注意: 

    爲了簡單起見,假定表中關鍵字的類型爲整數:

typedef int KeyType; //KeyType應由用戶定義
相關文章
相關標籤/搜索