
数据结构
文章平均质量分 87
DR5200
这个作者很懒,什么都没留下…
展开
-
常考排序算法总结(插入排序,希尔排序,快速排序,归并排序,计数排序)
文章目录一.插入排序二.希尔排序三.快速排序四.归并排序五.计数排序一.插入排序当插入第i(i>=1)个元素时,前面的array[0],array[1],…,array[i-1]已经排好序,此时用array[i]的排序码与array[i-1],array[i-2],…的排序码顺序进行比较,找到插入位置即将array[i]插入,原来位置上的元素顺序后移具体流程在图中已经画出插入排序在最坏的情况的时间复杂度是多少呢?最坏的情况很显然是逆序的情况,要想有序,第二个数需要移动1次,第三个数需要移动原创 2021-05-16 18:59:17 · 1327 阅读 · 20 评论 -
二叉树,堆详解
文章目录一.树及其相关概念(1).树的介绍(2).树的表示二.二叉树概念及结构(1).二叉树概念及特点(2).特殊的二叉树(3).二叉树的性质(4).二叉树相关练习三.二叉树的顺序结构及实现四.二叉树的链式结构及实现一.树及其相关概念(1).树的介绍树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。树的特点 :(1).有一个特殊的结点,称为根结点,根节点没有前驱结点(2).除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,原创 2021-05-03 18:33:40 · 2071 阅读 · 8 评论 -
栈和队列讲解和实现
文章目录一.栈(1).初始化栈(2).入栈(3).出栈(4).获取栈顶元素(5).获取栈中有效元素个数(6). 检测栈是否为空,如果为空返回true,非空返回false(7).销毁栈(8).完整代码实现二.队列(1).初始化队列(2).入队列(3).出队列(4).获取队列头部元素(5).获取队列队尾元素(6).获取队列中有效元素个数(7).检测队列是否为空,如果为空返回true,非空为false(8). 销毁队列(9).完整代码实现一.栈栈: 一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作原创 2021-04-18 16:53:25 · 443 阅读 · 5 评论 -
双向循环链表讲解及实现
文章目录一.带头双向循环链表二.实现(1).动态申请一个结点一.带头双向循环链表带头双向循环链表:结构最复杂,一般用在单独存储数据。实际中使用的链表数据结构,都是带头双向循环链表。另外这个链表虽然结构复杂,但是使用代码实现以后会发现能带来很多优势.二.实现Lish.h中部分声明(1).动态申请一个结点...原创 2021-04-10 18:04:55 · 14768 阅读 · 7 评论 -
leetcode 常考链表面试题总结
文章目录一. leetcode203 移除链表元素一. leetcode203 移除链表元素原题链接:移除链表元素第一种方法: 直接删除法这种方法需要特殊考虑头结点的删除情况首先考虑一般情况 ,删除的不是头结点,定义两个指针 prev , cur 一前一后,逐步删除移动我们由图中可以看到,如果删除的是头结点,prev->next = cur->next 该步就会出错,因为 prev 此时是空指针删除头结点的情况如下:给出代码 :struct ListNode* remove原创 2021-02-26 12:07:14 · 2394 阅读 · 16 评论 -
单链表的增删查改
文章目录一.顺序表的优缺点二.链表1.链表的概念和结构2.链表的实现一.顺序表的优缺点上一篇博客讲解了顺序表,我们来回顾一下顺序表的优缺点缺点:(1). 中间/头部的插入删除,时间复杂度为O(N)(2). 增容需要申请新空间,拷贝数据,释放旧空间。会有不小的消耗。(3). 增容一般是呈2倍的增长,势必会有一定的空间浪费。例如当前容量为100,满了以后增容到200,我们再继续插入了5个数据,后面没有数据插入了,那么就浪费了95个数据空间。优点:(1). 可用下标进行随机访问(2).缓存命中率原创 2021-02-21 00:09:48 · 3086 阅读 · 17 评论 -
顺序表讲解和实现
文章目录一.线性表二.顺序表一.线性表线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。二.顺序表顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。顺序表一般可以分为:(1)静态顺序表原创 2021-02-16 14:55:30 · 1658 阅读 · 5 评论 -
时间复杂度讲解(斐波那契,二分查找,冒泡排序分析)
文章目录一.算法效率二.时间复杂度1.时间复杂度的概念2.大 o的渐进表示法3.常见时间复杂度的计算三.空间复杂度一.算法效率算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间,在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空原创 2021-02-13 19:35:47 · 3562 阅读 · 5 评论 -
青蛙跳台阶问题及变形
文章目录青蛙跳台阶一青蛙跳台阶二青蛙跳台阶三青蛙跳台阶一问题描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)如果n=1,只有一种跳法,那就是1如果n=2,那么有两种跳法,2,[1,1]如果n=3,那么有三种跳法,[1,1,1],,[1,2],[2,1]如果n=4,那么有五种跳法,[1,1,1,1],[1,1,2],[1,2,1],[2,1,1],[2,2]如果n=5,那么有八种跳法,[1,1,1,1,1],[1,1原创 2021-01-23 18:15:19 · 1463 阅读 · 1 评论