第七章 查詢技術

2021-06-27 14:55:26 字數 2225 閱讀 1166

第7章

查詢技術

【學習重點】

①折半查詢的過程及效能分析;

②二叉排序樹的插入、刪除和查詢操作;

③平衡二叉樹的調整方法;

④雜湊表的構造和查詢方法;

⑤各種查詢技術的時間效能及對比。

【學習難點】

①二叉排序樹的刪除操作;

②平衡二叉樹的調整方法;

③閉雜湊表的刪除演算法。

7.1 概述

7.11  查詢的基本概念

在查詢問題中,通常將資料元素稱為記錄。

關鍵碼可以標識乙個記錄的某個資料項稱為關鍵碼,關鍵碼的值稱為鍵值,若關鍵碼可以唯一地標識乙個記錄,則稱此關鍵碼為主關鍵碼;反之,則稱為次關鍵碼。

查詢查詢是在具有相同型別的記錄構成的集合中找到滿足給定條件的記錄。

查詢的結果

若在查詢的集合中找到了與給定值相匹配的記錄,則稱查詢成功;否則,稱查詢不成功。

靜態查詢、動態查詢

不涉及插入和刪除操作的查詢稱為靜態查詢;涉及插入和刪除操作的查詢稱為動態查詢。

查詢結構

面向查詢操作的資料結構稱為查詢結構。

本章討論的查詢結構有:

⑴線性表

⑵樹表⑶雜湊表

7.2線性表的查詢技術

7.2.1   順序查詢

基本思想:從線性表的一端向另一端逐個將關鍵碼與給定值進行比較。

1.順序表的順序查詢

順序表的順序查詢演算法seqsearch 1

2.單鏈表的順序查詢

7.3 樹表的查詢技術

7.3.1  二叉排序樹

性質:若它的左子樹不空,則左子樹上所有結點的值均小於根結點的值;

若它的右子樹不空,則右子樹上所有結點的值均大於根結點的值;

它的左右子樹也都是二叉排序樹。

二叉排序樹的插入

演算法 insertbst

void bisorttree::insertbst(binode*s)

二叉排序樹的構造

演算法 bisorttree

bisorttree:: bisorttree(int r,int n)

for(i=0;is=new binode;s->data=r[i];

s->lchild=s->rchild=null;

insertbst(root,s);

二叉排序樹的刪除

演算法 deletebst

void bisorttree::deletebst(binode*p,binode*f)

if((p->lchild==null)&&(p->rchild==null)){

f->lchild=null;

delete p;

else if (p->rchild==null){

f->lchild=p->lchild;

delete p;

else{

par=p;s=p->rchild

p->data=s->data;

if(par==p) par->rchild;

delete s;

二叉排序樹的查詢及效能分析

演算法searchbst

binode* bisorttree::searchbst(binode*root,int k)

if(root==null)return null;

else if (root->data==k)return root;

else if(root->datalchild,k);

else return searchbst(root->rchild,k);

7.3.2 平衡二叉樹

平衡二叉樹性質:

根結點的左子樹和右子樹的深度最多相差1.

根結點的左子樹和右子樹也都是平衡二叉樹。

平衡因子

結點的平衡因子是該結點的左子樹的深度與右子樹的深度之差。

最小不平衡子樹

最小不平衡子樹是指在平衡二叉樹的構造過程中,以距離插入結點最近的、且平衡因子的絕對值大於1的結點為根的子樹。

7.4 雜湊表的查詢技術

7.4.1 概述

採用雜湊技術將記錄儲存在一塊連續的儲存空間中,這塊連續的儲存空間成為雜湊表,將關鍵碼對映為雜湊表中適當儲存位置的函式稱為雜湊函式。

雜湊函式的設計

直接定址法

除留餘數法

數字分析法

平方取中法

摺疊法7.4.3處理衝突的方法

(1)開放定址法

(2)拉鍊法

第七章 查詢

1 在雜湊表中,所謂同義詞就是具有相同雜湊位址的兩個元素。2分 f 我覺得本題應該是錯的 首先應該兩個不同元素,然後是得到同一雜湊位址 2 即使把2個元素雜湊到有100個單元的表中,仍然有可能發生衝突。2分 t 本題主要是考察雜湊 hash 函式是可以改變的,衝突的選擇是根據函式的選取 3 將m個元...

第七章 查詢

第七章 查詢 一 查詢的基本概念有 1 查詢表 2 關鍵字 3 查詢 4 動態查詢表和靜態查詢表 5 平均查詢長度 二 線性表的查詢 1 順序查詢 1 資料型別定義 typedef keytype int 這個根據具體情況去定義 在這裡定義為int typedef struct elemtype t...

資料結構 第七章 查詢技術

第七章 查詢技術 學習重點 1 折半查詢的過程及效能分析 2 二叉排序樹的插入,刪除和查詢操作 3 平衡二叉樹的調整方法 4 雜湊表的構造和查詢方法 5 各種查詢技術的時間效能及對比。學習難點 1 二叉排序樹的刪除操作 2 平衡二叉樹的調整方法 3 閒雜湊表的刪除演算法。7.1 概述 7.1.1 查...