什么是树?
- 客观世界中许多事物存在层次关系,如:
1、人类社会家谱
2、社会组织结构
3、图书信息管理 - 分层次组织在管理上具有更高的效率
数据管理的基本操作之一:查找
- 静态查找:集合中记录是固定的
- 没有删除和插入操作,只有查找
- 动态查找:集合中记录是动态变化的
- 除查找外,还可能发生插入和删除操
静态查找:
1、顺序查找 :时间复杂度为O(n)
int sequentialSearch(StaticTable *Tb1,ElementType K){
int i;
Tb1->Element[0]=k;//建立哨兵,以减轻循环判断条件
for(i=Tb1->Length;Tb1->Element[i]!=k;i--);
return i;//查找成功返回单元下标;不成功返回0
}
2、二分查找 :假设n个数据元素的关键字满足有序,mid时间复杂度为O(logN)
int binarySearch(StaticTable *Ta1,ElementType k){
int left=0,right,mid,NotFound=-1;
left=1; //初始左边界
right=Ta1->Length; //初始右边界
while(left<=right){
mid=(left+right)/2; //初始中间元素
if(k < Ta1->Element[mid]){
right=mid-1; //小于中间元素,调整右边界
}else if(k > Ta1->Element[mid]){
left=mid+1; //大于中间元素,调整左边界
}else{
return mid; //查找成功,返回元素数据下标
}
}
return NotFound; //查找不成功 ,返回-1
}