![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 76
咕咚走了
这个作者很懒,什么都没留下…
展开
-
浅谈栈(Stack)数据结构
一、概述:栈(stack):栈是一种线性的结构,这种数据结构仅限在线程表的一段进行插入和删除操作。其中线性表插入的和删除的一段称为栈顶(top),不循序插入和删除的一段称为栈底(bottom)。所以栈数据结构是遵循“后入先出”,也就是“LIFO”。二、栈的特征(1)栈也是一种线性的机构。(2)相比较数组,占对应的操作是数组的子集。(3)只能从一端添加元素,也只能从一端取出元素,这一端称为栈顶。(4)栈是一种后进先出的数据结构。称为:Liast In First Out(LIFO)原创 2021-04-28 15:27:00 · 1644 阅读 · 0 评论 -
自己封装实现一个的LinkedList集合类
一、LinkedList具体实现:我们先看一下,java为我们提供LinkedList是什么样子的:LinkedList是一种双向链表结构的集合,我们可以通过LinkedList提供的Node类可知,在Node中有三个成员变量(item、next和prev),item存储当前节点的值,next指向当前节点的下一个节点,prev指向当前节点的上一个节点,所以我们说LinkedList是一种双向链表。private static class Node<E> { E item;原创 2021-04-23 15:49:43 · 281 阅读 · 0 评论 -
封装一个自定义ArrayList
根据对ArrayList的理解封装一个指定的集合数组(CustomArray);CustomArray类:public class CustomArray<E> { //private int[] data; private E[] data; private int size; //构造函数,出入数组的容量capocity构造CustomArray public CustomArray(int capacity){ //d原创 2021-04-23 12:25:00 · 184 阅读 · 0 评论 -
什么是算法复杂度分析
什么是算法复杂度分析: 任何可以正常运行的程序都可以成为算法,那所谓的算法复杂度分析是什么呢?简而言之,所谓的算法复杂度分析就是用来表示算法的运行的性能。 在现实的工作中,同样的任务,我们可以通过不同的算法来完成,对于不同的算法来说,他们的时间的性能是有差异的,那就需要对各个算法的性能进行评估,我们可以通过使用一个或一组测试用例吧算法运行一下,然后比较一下性能的差异,但是这样的比较结果很多时候是有局限性的,因为严格来讲你需要保证不同算法的计算机,他们的性能是完全一致的,甚至计算机使用的系...原创 2021-04-13 20:16:05 · 519 阅读 · 0 评论 -
插入排序算法
概述:插入排序是一种最简单的排序方法之一,它的基本思想是将一个记录插入到已经排序号的有序表中,从而获得一个新的、记录数增1的有序列表。通过双城循环的方法进行实现,外层循环用来标志当前待排序的数组,内层循环用来查找当前数字在有序序列中的正确位置,并进行相应的移动。规定一个为i的指针,这个指针指向当前需要排序的序列中的值,当指向的这个值比它左侧的数据小的时候,将当前这个值,与其左侧的数字进行交换,再判断当前这个数字是否比其左侧的数字小,如果小再进行交换,不断的重复这个过程,直到左侧没有数据,或者左侧数据比原创 2021-04-13 19:36:34 · 160 阅读 · 0 评论 -
选择排序算法
所谓的选择排序算法,就是在待排序的数组中不断的去查找最小值的过程;首先,我们在待排序的数组中查找一个最小值,这个最小值要满足数组中的其他元素都要比它大,将查找到的这个最小值暂存到一个新的数组中;然后,再查找剩余数组中最小的一个值,不断的重复查询最小值,指定数组中没有值可查为止,将以此查询到的最小值存入到新的数组中,我们就得到了一个有序的数组。在开发中为了避免空间的浪费,我们不会new一个新数组,而是在原来的数组上实现上述步骤;实例代码:准备一个数组生成器:public class原创 2021-04-12 19:14:56 · 135 阅读 · 0 评论 -
线性查找法
所谓的线性查找法,就是在沿着一个固定的方向,挨个查找数组中的元素,直到这个查询询到目标元素或者遍历完数组为止。线性查找法主要有两部分组成:1>输入:数组和目标元素;2>输出:目标元素所在的索引;若不存在,返回-1;实例代码:public class LineTest { private LineTest() { } /** * 泛型只能接受类对象,不能接受基本类型的变量 * 不可以是基本数据类型,只能是类对象 ..原创 2021-04-07 11:34:18 · 196 阅读 · 0 评论 -
归并排序是什么?
归并排序(Merge Sort)是建立再归并操作上的一种有效的,稳定的排序算法,该算法是采用分治法(Divide and Conquer),将需要排序的数组通过递归的方式进行拆分成多层小的数组,对拆分后的子序列进行排序,再将已有的子序列合并,得到完全有序的子序列。也就是说,先将每个子序列有序,再使子序列间有序。分段可以理解为递归的拆分子序列的过程(递归的深度为:以2为底n的对数),将产生的若干子序列递归合并成一个真正的有序序列(递归深度同样为:以2为底n的对数)。...原创 2021-04-07 10:41:35 · 443 阅读 · 0 评论 -
什么是快速排序算法?
快速排序算法是对冒泡排序算法的一种改进。它的基本思想就是:首先,在需要排序的序列中选取一个基准数,通过基准数将需要排序的数组分割成两个独立的部分,这两部分数据要满足其中的一部分数据中的所有数据要比另一部分的数据都要小,然后再按照这个方法对这两部分数据进行不断的分割,直到不能分割为止,整个过程可以通过递归的进行,以此达到整个数据达到有序序列。说白了,就是给基准数找到正确的索引位置的过程。如图表示,我们假设选取的这个基准数为数组的第一个数据,然后声明一个临时变量来存储这个基准数据(tmp = 34)原创 2021-04-06 15:18:21 · 859 阅读 · 0 评论