轉:線性表的尋找-分塊尋找

來源:互聯網
上載者:User

標籤:style   blog   http   color   ar   strong   2014   sp   log   

轉自:http://student.zjzk.cn/course_ware/data_structure/web/chazhao/chazhao9.2.3.htm

分塊尋找

     分塊尋找(Blocking Search)又稱索引順序尋找。它是一種效能介於順序尋找和二分尋找之間的尋找方法。

1、 二分尋找表格儲存體結構
     二分尋找表由"分塊有序"的線性表和索引表組成。
(1)"分塊有序"的線性表
     表R[1..n]均分為b塊,前b-1塊中結點個數為 ,第b塊的結點數小於等於s;每一塊中的關鍵字不一定有序,但前一塊中的最大關鍵字必須小於後一塊中的最小關鍵字,即表是"分塊有序"的。

(2)索引表
     抽取各塊中的最大關鍵字及其起始位置構成一個索引表ID[l..b],即:
ID[i](1≤i≤b)中存放第i塊的最大關鍵字及該塊在表R中的起始位置。由於表R是分塊有序的,所以索引表是一個遞增有序表。
  【例】就是滿足上述要求的儲存結構,其中R只有18個結點,被分成3塊,每塊中有6個結點,第一塊中最大關鍵字22小於第二塊中最小關鍵字24,第二塊中最大關鍵字48小於第三塊中最小關鍵字49。
      
2、分塊尋找的基本思想
  分塊尋找的基本思想是:
(1)首先尋找索引表
  索引表是有序表,可採用二分尋找或順序尋找,以確定待查的結點在哪一塊。

(2)然後在已確定的塊中進行順序尋找
   由於塊內無序,只能用順序尋找。

3、分塊尋找樣本
【例】對於上例的儲存結構:
(1)尋找關鍵字等於給定值K=24的結點
  因為索引表小,不妨用順序尋找方法尋找索引表。即首先將K依次和索引表中各關鍵字比較,直到找到第1個關鍵宇大小等於K的結點,由於K<48,所以關鍵字為24的結點若存在的話,則必定在第二塊中;然後,由ID[2].addr找到第二塊的起始地址7,從該地址開始在R[7..12]中進行順序尋找,直到R[11].key=K為止。
(2)尋找關鍵字等於給定值K=30的結點
  先確定第二塊,然後在該塊中尋找。因該塊中尋找不成功,故說明表中不存在關鍵字為30的結點。
  具體過程【參見動畫示範】

4、演算法分析
(1)平均尋找長度ASL
  分塊尋找是兩次尋找過程。整個尋找過程的平均尋找長度是兩次尋找的平均尋找長度之和。
①以二分尋找來確定塊,分塊尋找成功時的平均尋找長度
      ASLblk=ASLbn+ASLsq≈lg(b+1)-1+(s+1)/2≈lg(n/s+1)+s/2

②以順序尋找確定塊,分塊尋找成功時的平均尋找長度
      ASL‘blk=(b+1)/2+(s+1)/2=(s2+2s+n)/(2s)
注意:
    當 s= 時ASL‘blk取極小值 +1 ,即當採用順序尋找確定塊時,應將各塊中的結點數選定為 。
  【例】若表中有10000個結點,則應把它分成100個塊,每塊中含100個結點。用順序尋找確定塊,分塊尋找平均需要做100次比較,而順序尋找平均需做5000次比較,二分尋找最多需14次比較。
  注意:
  分塊尋找演算法的效率介於順序尋找和二分尋找之間。

(2)塊的大小
  在實際應用中,分塊尋找不一定要將線性表分成大小相等的若干塊,可根據表的特徵進行分塊。
  【例】一個學校的學生登記表,可按系號或班號分塊。

(3) 結點的儲存結構
  各塊可放在不同的向量中,也可將每一塊存放在一個單鏈表中。
  
(4)分塊尋找的優點
  分塊尋找的優點是:
  ①在表中插入或刪除一個記錄時,只要找到該記錄所屬的塊,就在該塊內進行插入和刪除運算。
  ②因塊內記錄的存放是任意的,所以插入或刪除比較容易,無須移動大量記錄。
  分塊尋找的主要代價是增加一個輔助數組的儲存空間和將初始表分塊排序的運算。

轉:線性表的尋找-分塊尋找

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.