![](https://img-blog.csdnimg.cn/877614a571bb4d4ba1d9ef51f63c0b56.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法
文章平均质量分 52
数据结构就是“组织”大量的数据,所谓的组织,就是把数据按照一定的规则,放到一起,整理好之后,就方便后续使用(增删改查)。
小 乔
人生永远没有最晚的开始,人生在于超越,加油!
展开
-
数据结构中常见的排序算法
目录 稳定性 1.插入排序 2.希尔排序 3.选择排序 4.堆排序 5.冒泡排序 6.快速排序 7.归并排序 稳定性 俩个相等的数据,经过排序后,排序算法能保证其相对位置不变。 1.插入排序 特点:数组短,排序效率高;数组相对有序,排序效率也高; 时间复杂度:O(N*2) 空间复杂度:O(1) 稳定 代码: public static void insertSort(int[] arr){ int bound=1; //[0原创 2022-03-23 20:48:28 · 1138 阅读 · 0 评论 -
遍历 二叉树
层序遍历: 1.先把根节点放到队列里 2.进行出队列,并且访问这个节点 3.把当前节点的左子树和右子树再入队列(null不管) 4.回到第二步继续循环执行原创 2022-03-21 00:20:04 · 764 阅读 · 0 评论 -
---栈&队列---
栈中的元素遵循“后进先出”,允许进行插入删除的那一端称为栈顶;固定的,不允许进行插入和删除的另一端称为栈底,可以把它想象成枪上的弹夹方便理解。同时Stack是一个类,可以拿来直接用。原创 2022-03-20 00:12:27 · 404 阅读 · 0 评论 -
数组转链表
使用Node表示链表结点 public class Node { public int val; public Node next=null; public Node(int val) { this.val = val; } @Override public String toString() { return "["+val+"]"; } } 主方法 public class mmain { pu原创 2022-01-13 23:22:23 · 1198 阅读 · 0 评论 -
链表中结点的插入和删除
一、创建Node 二、插入结点 1.中间插入 2.头部插入 3.尾插 三、删除结点 1.中间删除 ①按值删除 ②按位置删除 ③按下标删除 2.头部删除 3.尾删 4.“移形换影”原创 2022-01-12 18:01:38 · 1225 阅读 · 0 评论 -
单项链表的创建、遍历以及按要求查找结点
目录 一、创建链表 1.创建Node类 2.创建固定内容的链表 3.获取头结点 二、遍历链表 方法一(for循环) 方法二(while循环) 获得取链表长度 三、按要求查找结点 1.查找链表上是否存在某结点 2.取链表最后一个结点 3.取链表的第N个结点 4.取链表的倒数第N个结点 5.取链表的倒数第二个结点 一、创建链表 1.创建Node类 //使用Node表示结点 public class Node { public int val; public N原创 2022-01-12 15:59:45 · 568 阅读 · 0 评论 -
什么是线性表?
线性表原创 2022-01-08 17:33:02 · 629 阅读 · 0 评论 -
自己实现一个ArrayList
目录 一、主函数 二、属性 三、构造方法 四、方法 //实现扩容 1.把元素尾插到顺序表末尾 2.按元素插入到任意中间位置 3.按照下标位置删除元素,这个方法的返回结果就是被删掉的元素 4.按照元素的值来删除元素 5.根据下标获取元素 6.根据下标修改元素 7.判断元素是否存在 8.查找元素位置 9.查找元素位置(从后往前找) 10.清空元素 11.大小 12.是否为空 五、调用方法(只举其中一个调用) 一、主函数 public static void ma原创 2022-01-08 02:18:42 · 411 阅读 · 0 评论 -
利用顺序表实现杨辉三角
主函数: public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入行数:"); int b = input.nextInt(); System.out.println(generate(b+1));行数=下标+1 } 实现方法: public s原创 2022-01-06 18:56:30 · 304 阅读 · 0 评论 -
顺序表实现线性表中常见的操作(增删改查)
1.创建ArrayList实例 //多态,向上转型 List<String> arrayList1 = new ArrayList<>(); 2.往ArrayList中添加一些元素 //add其中一个参数版本是添加到顺序表末尾 arrayList.add("c"); arrayList.add("c++"); arrayList.add("java"); arrayList.add("python"); //add的另一个参数版本是把元素添加到下标指定位置上 ar.原创 2022-01-06 01:12:18 · 421 阅读 · 0 评论 -
时间复杂度 和 空间复杂度
《数据结构和算法》中时间复杂度和空间复杂度都是衡量程序效率的一种方式。 一、时间复杂度: 衡量的是程序运行的快慢。 衡量时间复杂度的时候,需要先确定基本操作(执行次数最多的典型操作)是啥,可能是++,可能是赋值,也可能是读取,还有可能是打印等。其次利用大O的渐进表示法粗略的描述问题发展的趋势。(执行次数和复杂度成正比,不是精确) 大O的渐进表示法:计算基本操作执行的次数,保留最高阶项,同时去掉系数,得到了一个用来衡量复杂杜的“近似值”,用O()表示。 例: void func(int N.原创 2022-01-03 23:08:57 · 308 阅读 · 0 评论