数据结构与算法
文章平均质量分 72
数据结构复习
南往无念
这个作者很懒,什么都没留下…
展开
-
高级数据结构-二叉搜索树&红黑树
二叉搜索树二叉搜索树又叫二叉查找树,二叉排序树:它具有以下特点:1.如果它的左子树不为空,则左子树上结点的值都小于根结点2.如果它的右子树不为空,则右子树上结点的值都大于根结点(等于在左子树或者右子树)3.子树同样遵循以上两点为什么又叫做二叉排序树呢?二叉树的便利方式:前 中 后 层次只要一棵树是二叉搜索树,它的中序遍历一定是有序的。中序遍历:左 根(输出) 右二叉查找算法?二叉搜索树的增删改查...原创 2021-09-02 19:56:21 · 162 阅读 · 1 评论 -
高级数据结构-树论二叉树
高级数据结构-树论基础概念几个重要的术语1.结点:树里面的元素2.父子关系:节点之间相连的边3.子树:当结点大于1时,其余结点分为的互不相交的集合称为子树4.度:一个结点拥有子树的数量称为结点的度5.叶子:度为0的结点6.孩子:结点的子树的根称为孩子结点7.双亲:和孩子节点对应8.兄弟:同一个双亲结点9.森林:由N个互不相交的树构成森林...原创 2021-08-26 00:18:01 · 138 阅读 · 0 评论 -
基础算法-贪心&动态规划
基础算法-贪心&动态规划基本概念贪心算法:贪心算法又叫做贪婪算法,它在求解问题时,总是做出眼前最大利益,也就是说只顾眼前不顾大局,所以它是局部最优解。核心点:通过局部最优解推出全局最优怎么去贪就是贪心策略怎么选择。思考公司安排会议室,现在给你N个会议的开始和结束时间,你怎样安排会议才能使会议室得到最大利用?即安排最多场次的会议选时间最短:1-3.5 2-4 3.6-6 6-7如果选择2-4那么1-3和3-5都不可以选择所以选择时间最短不是最佳策略按结束时间从小到大排序:首先把原创 2021-08-16 02:44:46 · 541 阅读 · 0 评论 -
基础算法-排序(选择&冒泡&快排)
基础算法-排序(选择&冒泡&快排)基本概念选择排序选择排序和插入排序相似,也分已排序区间和未排序区间,选择排序每次会从未排序区间中找到最小元素,将其放到已排序区间的末尾,但是不想插入排序那样移动数组,选择排序会每次进行交换4 5 6 3 2 1第一次 1 5 6 3 2 4第二次 1 2 6 3 5 4以此类推代码实现 package Sort;import java.util.Arrays;public class SelectSort { public sta原创 2021-08-12 02:39:51 · 146 阅读 · 0 评论 -
基础算法-排序(插入&希尔&归并)
基础算法-排序(插入&希尔&归并)基本概念排序算法有哪些快速排序、冒泡排序、希尔排序、二分(归并)排序O(nlogn)、桶排序、堆排序、基数排序、插入排序O(n^2)、选择排序插入&希尔&归并冒泡&选择&快速堆排序:树论高级篇分析排序算法的几个方面:1.时间复杂度2.空间复杂度3.比较次数&交换次数:排序肯定有比较和交换两个操作,4.稳定性:(相同的两个元素,排序后相对位置不变)1 9 3(1) 5 3(2)1 3(1) 3(原创 2021-08-11 03:28:31 · 87 阅读 · 0 评论 -
基础算法-数论&递归&分治&回溯
基础算法-递归&分治&回溯基本概念数论思想:利用数学公式或者定理或者规律求解问题。算法中最难的是:递归(树论:二叉树,红黑树都是用递归)和动态规划递归递归是一个非常重要的算法思想,应用也是相当的广泛,包括我们后边学的数据结构尤其是树形结构里面跟递归是密布可分的。数学公式:f(n)=f(n-1)+1递归的时间复杂度和空间复杂度都很大所以对于递归需要优化递归做了很多重复的计算导致时间复杂度很大递归优化1.使用非递归。所有的递归代码理论上都可以转换成非递归的2.加入缓存:原创 2021-08-10 01:23:38 · 133 阅读 · 0 评论 -
基础数据结构-队列
基础数据结构-队列基本概念思考:线程池里面任务满时,此时又来一个新任务,线程池是如何处理的?具体有哪些策略?这些策略又是如何实现的队列:先进先出(FIFO),队列是一个特殊的线性表队列定义:队列只允许在表的前端进行删除操作,而在表的后端进行插入操作,是一种操作受限制的线性表。进行插入操作的是队尾,进行删除操作的是队头。没有元素时称为空队列。队列中的数据元素称为队列元素,在队列中插入队列元素称为入队,从队列中删除元素称为出队。(可以类比于排队买票,不允许插队)队列的分类:1.顺序(单向)队原创 2021-08-09 00:28:48 · 127 阅读 · 0 评论 -
基础数据结构-栈
基础数据结构-栈基本概念栈:后入先出栈如何实现其实它是一个仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对的另一端是栈底。向一个栈插入新元素又称为进栈、入栈、压栈。它是把新元素放到栈顶元素上边使其成为新的栈顶元素:从一个栈删除元素又称作出栈活退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。栈其实是一个特殊的链表或者数组既然栈也是一个线性表,那么我们肯定会想到数组和链表,而且栈还有很多限制,为什么还要使用栈,而不直接用数组和链表。数组和链表暴露太多的接口,实现上更灵活,有些原创 2021-08-07 21:31:48 · 265 阅读 · 0 评论 -
基础数据结构-链表
基础数据结构-链表基本概念链表定义:链表通过指针将一组零散的内存块串联在一起,其中我们把内存块称为链表的“结点”。为了将所有结点串起来,每个链表的结点除了存储数据之外,还需要记录链上的下一个结点的地址特点:1.不需要连续的内存空间。2.有指针引用。3.三种常见的链表结构:单链表、双向链表和循环链表。单链表:单链表中有两个结点是比较特殊的,它们分别是第一个结点和最后一个结点,我们一般把第一个结点叫作头结点,最后一个结点叫作尾结点其中,头结点用来记录链表的基地址。有了它我们可以遍历到整条链表原创 2021-08-07 01:07:34 · 76 阅读 · 0 评论 -
基础数据结构-数组
基础数据结构-数组给一个文件包含全国人民的年龄,现在要 统计每一个年龄有多少人给定机器单台+2CPU+2G内存,不得使用现成的容器,比如map等数组算法在以上情况下你该如何以最搞笑的方法解决这个问题排序算法:先排序再进行统计每个段数字的个数 不能?为什么?排序的最高效算法:O(nlogn)14亿数据 排不出来,内存不够。int a[]=new int[180]; a[o]++;0表示0岁的人...原创 2021-08-06 02:27:03 · 143 阅读 · 0 评论 -
数据结构-预备知识
数据结构与算法学习一推荐书籍 数据结构:严蔚敏版《数据结构与算法》《大话数据结构》算法:基础级:刘汝佳 算法竞赛入门级进阶级:刘汝佳黑书 算法导论;注:很难,非算法行业慎入 刷题网站:(1)力扣(2)POJ(北京大学)或者HDU(杭州电子科技大学)为什么要学习数据结构和算法·1.BAT一线互连网公司面试必问技术数据结构与算法是所有计算机类的基础。大企看中的是潜力。·2.如果你不想做一辈子的CRUD(增删改查)工程师:业务工程师,CURD工程师统计功能 :排序+循环。·3.架构师必原创 2021-08-03 15:49:02 · 67 阅读 · 0 评论