图解动态数组的时间复杂度

分析动态数组的时间复杂度

时间复杂度分析

在这里插入图片描述
平均情况下只需要挪动大概1/2的元素,所以平均复杂度为O(n/2)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

    //从数组中删除index位置的元素,返回删除的元素
    public E remove(int index){
        if(index < 0 || index >= size){
            throw new IllegalArgumentException("remove failed. Index is illegal");
        }
        for(int i = index + 1; i < size; i ++){
            data[i - 1] = data[i];
        }
        size --;
//        data[size] = null;//loitering objects != memory leak内存泄漏

        if(size == data.length / 2)
            resize(data.length / 2);
        return data[index];
    }

更改为

		if(size == data.length / 4 && data.length / 2 != 0)
            resize(data.length / 2);
        return data[index];
数据结构中的查找算法是用于在特定的数据结构中寻找特定元素的过程。常见的查找算法有线性查找(顺序查找)和二分查找,还有更复杂的数据结构如哈希表和二叉搜索树(BST)中对应的查找方法。 1. **线性查找**(Sequential Search):也叫顺序查找,是最基础的查找方法,从数组的第一个元素开始逐个比较,直到找到目标或遍历完整个数组。适用于小规模数组或者无序数组。 2. **二分查找**(Binary Search):适用于已排序的数组,每次将搜索范围缩小一半,通过中间元素的比较决定是左半部分还是右半部分继续查找,大大提高了查找效率。 3. **哈希表查找**:使用哈希函数将键映射到存储位置,查找速度极快,平均时间复杂度为O(1),但可能存在哈希冲突,需要解决冲突的方法。 4. **二叉搜索树查找**:对于每个节点,它的左子树所有节点值都小于该节点,右子树所有节点值都大于该节点。查找时从根节点开始,根据目标值与当前节点的大小关系决定左子树或右子树,直至找到目标或空树。 图解通常会用流程图、伪代码或实际的图形展示这些查找过程。例如,线性查找可以用一个箭头从第一个元素逐个指向下一个元素的示意图表示;二分查找则会展示递归调用的树形结构;哈希表可能会用一个表格和散列函数来展示键值对的存储和查找。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值