![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
山不让尘,川不辞盈。
这个作者很懒,什么都没留下…
展开
-
ArrayList的add方法引出的几个小结论
ArrayLis add方法,原创 2022-06-30 16:16:51 · 122 阅读 · 0 评论 -
简单排序希尔排序
在使用插入排序时,如果数据量很大,那么后面较小的数要找一个位置排序,要比较很多次,消耗大量时间。希尔排序使用“分而治之”思想,有效地解决了这个问题,相当于是插入排序的plus版本。1.数据实例原始数据 :76543210gap=4:32107654gap=2:10523476gap=1:01234567思想是先把数据分成几部分,进行比较,gap=1时,相当于插入排序2.动态图public class ShellSort { public int[] sort(int[] s原创 2021-08-22 17:04:50 · 85 阅读 · 0 评论 -
简单插入排序
选择排序,顾名思义,就是选出一个数,找好位置放入。有点类似于扑克牌。顺便说一句,我在学习所有这些排序时,专门买了一副扑克牌演示代码过程,效果还不错,建议使用。1.数字示例76543216754321567432145673213456721234567112345672.动态效果图3.代码public class InsertionSort { public int[] sort(int[] sourceArray) { int[] arr = Arrays.原创 2021-08-22 15:53:01 · 74 阅读 · 0 评论 -
简单选择排序
选择排序,顾名思义,就是选择嘛,选择最小的值或者最大的值。效果图:public class SelectSort { public int[] sort(int[] sorceArray) { int[] arr = Arrays.copyOf(sorceArray, sorceArray.length); for (int i = 0; i < arr.length - 1; i++) {//最多需要排arr.length-1次就排完了原创 2021-08-21 20:33:45 · 83 阅读 · 0 评论 -
冒泡排序及简单优化
效果图:其实就是每遍历一次,将一个较大(较小也可以)的数放到后面。循环遍历几次,就可以完成从小到大排序。public class BubbleSort { public int[] sort(int[] sorceArray){ int[] arr = Arrays.copyOf(sorceArray, sorceArray.length); for (int i = 1; i < arr.length; i++) { boolea原创 2021-08-21 19:57:31 · 55 阅读 · 0 评论 -
虚拟头结点的意义
在链表中,我们会用到虚拟头结点。其意义就在于使用添加删除方法时将头部与其它位置统一。让我们对比一下,添加虚拟头结点前与添加虚拟头结点后所发生的变化。1.添加前 (用插入节点做对比)//头部添加元素public void addFirst(E e) { Node node = new Node(e); node.next = head; head = node;}//在任意位置处添加元素public void add(int index, E e) { if (原创 2021-08-21 15:43:41 · 300 阅读 · 0 评论 -
基础数组实现栈
基础数组实现栈栈是一种数据结构,就是存储数据的容器。今天,我们来实现下栈。要实现栈,就是要实现栈的各种方法,包括进栈(push),出栈(pop),查看栈顶元素(peek)等。用到的底层是数组。包含的方法有增、删、改、查,还有是否为空、容量、元素数量、输出。基本就是这些。一、实现数组1.根据索引添加元素public void add(E e, int index) { if (size == data.length) { throw new IllegalArgumentE原创 2021-08-20 16:31:48 · 137 阅读 · 0 评论 -
基础数组实现队列
基础数组实现队列队列的特点是先进先出。一、实现数组在另一篇文章 基础数组实现栈 中已经写到,不再赘述。二、队列的接口要实现队列,就要实现队列的一些方法。包括入队、出队、得到队首元素等public interface ABCQueue<E> { //入队 void enqueue(E e); //出队 E dequeue(); //查看队首元素 E getFront(); //是否为空 boolean isEmpty();原创 2021-08-20 19:27:35 · 67 阅读 · 0 评论