
算法与数据结构
文章平均质量分 72
Dr.劳菠萝
这个作者很懒,什么都没留下…
展开
-
算法与数据结构(四) 数组与均摊复杂度
我们知道我们在java中只要数组初始化之后,长度就不能修改,所以我们一般使用ArrayList,他会自动扩容.下面我们来自己实现一个简单可扩容的数组. 1.代码实现 注意点:当我们插入或者删除元素的时候,我们需要判断数组是否满了,或者数组的size容量是否达到容量的一半,如果是则需要进行扩容和缩容 扩容的时候我们需要new一个原本容量两倍的数组,然后把老的数组元素赋值给新数组 缩容的时候,也是new一个容量为原本一半的数组,然后把老的数组元素赋值给新数组 所以我们新增或...原创 2022-03-09 01:19:08 · 290 阅读 · 0 评论 -
算法与数据结构(三) 插入排序
1.什么是插入排序插入排序法每次只处理当前的那个元素,例如将数组进行遍历,第N轮循环,第N个元素和之前的所有元素进行对比,然后插入到自己合适的位置.例如我有一个有序数组4,6,2,3,4,5;第一轮获取到第一个元素4,他为第一个元素,不需要对比,第二轮获取到6,6和前面的元素4对比,比4大,不需要动.第三轮获取到元素2,他先和6对比,发现需要插入到6前面,然后再和4对比,发现又需要插到4前面,就会变为2,4,6,3,1,5;如此类推.2.插入排序和选择排序的比较 我们发现插..原创 2022-03-09 00:07:47 · 359 阅读 · 0 评论 -
算法与数据结构(二)选择排序
1.什么是选择排序 我有一个无序数组A,第一次我先把A最小的数字拿出来,放在数组B的第一位,然后第二次,我从数组A剩下元素中获取到最小的数字,放到数组B的第二位,如此类推,每一轮我们都从数组A中获取到剩余元素的最小一个,放到数组B,最后数组B为有序的数组. 假设我有一个数组,6,4,3,1,2,5.我想进行排序,所以我需要遍历这个数组.假设第一轮遍历,我挨个去比较,我获取到最小的数字是1即minIndex=3,我的数字1需要排在第一个数字的位置,即索引0,就用0索引和3索引位置的元素交换...原创 2022-03-08 22:17:44 · 413 阅读 · 0 评论 -
算法与数据结构(一) 时间复杂度和循环不变量
1.什么是算法Algorithm的本意:解决问题的方法.一系列解决问题的,清晰,可执行的计算机指令2.循环不变量2.1线性查找法 从数组中找到,找到我所需要的元素. public static <E> int search(E[] data, E target){ for(int i = 0; i < data.length; i ++) if(data[i].equals(target)) ..原创 2022-03-08 00:23:20 · 6721 阅读 · 0 评论