标签 二分搜索 下的文章

查找一维数组里面某一个元素的索引值,找不到则返回-1.

static int binarySearch(int[] arr, int key) {
    int low = 0;
    int high = arr.length - 1;
    while (low <= high) {
        int mid = (low + high) >>> 1;
        int midValue = arr[mid];
        if (midValue < key) {
            low = mid + 1;
        } else if (midValue > key) {
            high = mid - 1;
        } else {
            return mid;
        }
    }
    return -1;
}

二叉查找树(英语:Binary Search Tree),也称为二叉搜索树、有序二叉树(ordered binary tree)或排序二叉树(sorted binary tree),是指一棵空树或者具有下列性质的二叉树:

  • 若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;
  • 若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值;
  • 任意节点的左、右子树也分别为二叉查找树;
  • 没有键值相等的节点。

二叉查找树相比于其他数据结构的优势在于查找、插入的时间复杂度较低。为O(log n)。二叉查找树是基础性数据结构,用于构建更为抽象的数据结构,如集合、多重集、关联数组等。

- 阅读剩余部分 -

数组

数组是一种数据形式,它把具有相同类型的若干变量按一定的顺序组织起来。数组中的每一个数据称为数组元素,数组中的元素以索引来表示其存放的位置,索引从0开始,步长是1。根据存放元素的类型,可分为一维数组和多维数组。

- 阅读剩余部分 -