文章目录
一、查找的基本概念
二、 两种查找表
三、顺序表查找
四、有序表查找
五、分块查找
六、B(B-tree)树
七、B+树:
一、 查找的基本概念
- 查找表:由同一类型的数据元素构成的集合。
- 关键字:数据元素中某个数据项的值。
- 查找:根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素。
- 平均查找长度:
二、两种查找表
静态查找表:只作查找操作的查找表
- 1、查找某个特定的数据元素是否在查找表中
- 2、检索某个特定数据元素和各种属性。
动态查找表:在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已经存在的某个数据元素。
- 1、查找时插入数据元素
- 2、查找时删除数据元素
三、顺序表查找
int Sequential_Search(int *a,int n,int key)
{
int i;
for(i=1;i<=n;i++)
{
if(a[i]==key)
return i;
}
return 0;
}
int Sequential_Search2(int *a,int n,int key)
{
int i;
a[0]=key;/*设置哨兵*/
i=n;
while(a[i]!=key)
{
i--;
}
return i;/*返回0则说明查找失败*/
}
四、有序表查找
折半查找
- 又称为二分查找,前提是线性表中的记录必须有序,线性表必须采用顺序存储
int Binary_Search(int *a,int n,int key)
{
int low,high,mid;
low=1;
high=n;
while(low<high)
{
mid=(low+high)/2;/*折半*/
if(key<a[mid]) //查找值比中间值小
high=mid-1; //最高下标调整到中位下标小一位
else if (key>a[mid])//若查找值比中指大
low=mid+1; //最小下标调整到中位下标大一位
else
return mid;//相等则说明mid即为查找到的位置
}
return 0;
}
五、分块查找
- 把数据集分成了若干块,并且这些需要满足两个条件:
六、B(B-tree)树
一种平衡的多路查找树
B树的查找:
B树的插入:
B树的删除:
七、B+树: