high=mid-1; else low=mid+1;} return -1; }
递归:
bin_search(st[],key,l,h) { if(l<=h) { mid=(l+h)>>1; if( st[mid] = = key) return mid; else if(st[mid]>key) return bin_search(st,key,l,mid-1); else return bin_search(st,key,mid+1,h) } else return -1; }
low
mid
high
bin_search(st[],key,n) { low=0; high=n-1; while(low<=high){ mid=(low+high)/2;
mid=(low+high)>>1; if( st[mid] = = key)
return mid; else if(st[mid]>key)
search1(st,key,n) { st[0]=key; i=n; while(st[i]!=key) i- -; return i; //查找返回序号,0为不成功 }
算法主要时间在循环,为减少判定,n个数据用容量为n+1的 一维数组表示。st[1]到st[n]存储数据,st[0]作为监视哨
顺序查找的平均时间为表长的一半。 2、顺序有序表的查找——— 二分(折半)查找
8.2 动态查找
8. 2.1 二叉排序树和二叉平衡树 一、二叉排序树
1 二叉排序树定义 二叉排序树(Binary Sort Tree)或者是一棵空树;或者是具 有下列性质的二叉树: (1)若左子树不空,则左子树中所有结点的值均小于它的 根结点的值; (2)若右子树不空,则右子树中所有结点的值均大于它的 根结点的值; (3)左、右子树也分别为二叉排序树;