# 空间复杂度

# 介绍

空间复杂度用来衡量一个算法,随着输入规模的变大,这个算法需要消耗额外的内存的大小.额外内存的意思是, 除了原始参数之外,算法运算过程需要消耗的内存.

# 二分查找法的空间复杂度

public static int binarySearchBasic(int[] a, int target) {
        //1. 设置左指针和右指针的初值
        int l = 0, r = a.length - 1;
        while (l <= r) // 当左右指针中间范围有元素时执行
        {
            //获取中间值的索引, 使用逻辑右移(>>>), 而不是算术右移(>>)
            int m = (l + r) >>> 1;
            //比较
            if (target < a[m]) {
                r = m - 1; // 目标值在中间值左边
            } else if (a[m] < target) {
                l = m + 1; // 目标值在中间值右边
            } else {
                return m; //中间值等于目标值, 返回中间值索引
            }
        }
        return -1; //循环内没有找到目标值

    }

在这个算法中,一共定义了三个变量: l,r,m(m并不会随着循环一次,再次多占4个字节) 这三个变量一共占用了 4 * 3 = 12 个字节. 并且随着输入的数据规模变大也不会改变. 因此这个算法的空间复杂度是O(1)O(1)

更新时间: 2024年4月10日星期三下午3点35分