
数据结构
文章平均质量分 61
zhaojian0910
这个作者很懒,什么都没留下…
展开
-
ArrayList 如何自动扩容
数组最大的优势是根据下标获取数据的时间复杂度为O(1)。但是数组有一个缺点就是需要一段连续的内存空间。而且数组大小不可以改变。如果数组满了,还要继续存储,那只能扩容数组。有人可能会说,Java中java.util.ArrayList底层就是数组实现的,从来没有管过数组大小的问题啊。其实是java.util.ArrayList自己实现了自动扩容。现在我们就来分析一下,java.util.ArrayList 是如何自动扩容的。我们一般初始化一个ArrayList的方法是用它的构造方法ArrayLis原创 2021-01-19 14:46:06 · 831 阅读 · 0 评论 -
排序算法之选择排序
算法思想选择排序算法的实现思路有点类似插入排序,也分已排序区间和未排序区间。但是选择排序每次会从未排序区间中找到最小的元素,将其放到已排序区间的末尾。代码实现public void testSort(int[] list) { for (int i = 0; i < list.length; i++) { int val = list[i];...原创 2020-02-20 01:02:52 · 163 阅读 · 0 评论 -
排序算法之归并排序
算法思想如果要排序一个数组,我们先把数组从中间分成前后两部分,然后对前后两部分分别排序,再将排好序的两部分合并在一起,这样整个数组就都有序了。代码实现/** * 将数组按中间位置分割成2个数组,直到分出来的数组中只有2个或者1个元素 * @param startIdx * @param endIdx */ public void demer...原创 2020-02-20 00:44:38 · 144 阅读 · 0 评论 -
排序算法之插入排序
算法思想首先,我们将数组中的数据分为两个区间,已排序区间和未排序区间。"初始已排序区间只有一个元素,就是数组的第一个元素。"插入算法的核心思想是取未排序区间中的元素,在已排序区间中找到合适的插入位置将其插入,并保证已排序区间数据一直有序。重复这个过程,直到未排序区间中元素为空,算法结束小规模数据或者基本有序的数据十分高效代码实现public void testSort(int[] lis...原创 2020-02-20 00:31:31 · 145 阅读 · 0 评论 -
排序算法之快速排序
算法思想选择排序算法的实现思路有点类似插入排序,也分已排序区间和未排序区间。但是选择排序每次会从未排序区间中找到最小的元素,将其放到已排序区间的末尾。代码实现 public void testSort(int[] list) { for (int i = 0; i < list.length; i++) { int val = list...原创 2020-02-19 23:42:07 · 911 阅读 · 1 评论 -
排序算法之冒泡排序
排序思想冒泡排序只会操作相邻的两个数据。每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求。如果不满足就让它俩互换。一次冒泡会让至少一个元素移动到它应该在的位置,重复 n 次,就完成了 n 个数据的排序工作代码实现public void testSort(int[] list) { // i 从 0 开始遍历 for (int i = 0; ...原创 2020-02-19 23:36:36 · 198 阅读 · 0 评论