二分查找(先排序)
typedef struct LNode *List;
struct LNode{
ElemenType Data[MAXSIZE];
int length;
};
int BinarySearch(List L,ElemenType X)
{
int left,right,mid;
left=1;
right=L->length;
while(left<=right)
{
mid=(left+right)/2;
if(X<L->Data[mid]) right=mid-1;
else if(X>L->Data[mid]) left=mid+1;
else return mid;
}
return 0;
}
二分查找判定树
查找某个结点的次数就为那个结点所在的深度。
n个结点的判定树深度为:log2N+1
平均查找长度:ASL=(4*4+4*3+2*2+1)/11=3