符号表
有序数组中的二分查找
二分查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。所以适用于静态有序数据查找,因为添加和删除元素需要维护数据的有序性,代价大。
二分查找详解
public static int Method(int[] nums, int target)
{
int low = 0;
int high = nums.Length - 1;
while (low <= high)
{
int middle = (low + high) / 2;
if (target == nums[middle])
{
return middle;
}
else if (target > nums[middle])
{
low = middle + 1;
}
else if (target < nums[middle])
{
high = middle - 1;
}
}
return -1;
}
1. 二叉查找树
能够将链表插入的灵活性和有序数组查找的高效性结合起来的符号表
在二叉查找树中:
(01) 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
(02) 任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
(03) 任意节点的左、右子树也分别为二叉查找树。
(04) 没有键值相等的节点(no duplicate nodes)。