√ 数据结构与算法
文章平均质量分 64
hello-java-maker
为了我们,做最好的自己
展开
-
LeetCode算法常用Java API
原文链接:https://blog.csdn.net/qq_34756156/article/details/120713595。原创 2022-08-07 18:29:29 · 1312 阅读 · 0 评论 -
这篇文章带你彻底理解红黑树
写在前面当在10亿数据进行不到30次比较就能查找到目标时,不禁感叹编程之魅力!人类之伟大呀! —— 学红黑树有感。终于,在学习了几天的红黑树相关的知识后,我想把我所学所想和所感分享给大家。红黑树是一种比较难的数据结构,要完全搞懂非常耗时耗力,红黑树怎么自平衡?什么时候需要左旋或右旋?插入和删除破坏了树的平衡后怎么处理?等等一连串的问题在学习前困扰着我。如果你在学习过程中也会存在我的疑问,那么本文对你会有帮助,本文帮助你全面、彻底地理解红黑树!本文将通过图文的方式讲解红黑树的知识点,并且不会涉及到任何代转载 2021-07-14 22:09:52 · 446 阅读 · 0 评论 -
全排列递归算法详解
一、概述全排列在很多程序都有应用,是一个很常见的算法,常规的算法是一种递归的算法,这种算法的得到基于以下的分析思路。 给定一个具有n个元素的集合(n>=1),要求输出这个集合中元素的所有可能的排列。二、递归实现2.1、实例一 例如,如果集合是{a,b,c},那么这个集合中元素的所有排列是{(a,b,c),(a,c,b),(b,a,c),(b,c,a),(c,a,b)...原创 2017-04-06 14:47:00 · 2653 阅读 · 0 评论 -
轻松读懂数据结构系列:早操排队图解选择排序
一、说在前面一直想写一些简单易懂的文章,因为平时看的很多的书籍或者文章都是看着很难受的感觉,当然,这并不是说书籍写的不好,只是说对于一些没有太多基础或者基础不是很好的来说,相对来说还是比较难以理解的。这个系列主要是写一些简单易懂的数据结构与算法的文章,同时也是帮助自己再理解理解这方面的知识。作为数据结构与算法的开篇,还是以排序算法作为第一部分的内容,需要注意的是,这一系列的文章并不是涉及到很...原创 2019-02-09 13:25:00 · 567 阅读 · 0 评论 -
轻松读懂数据结构系列:早操排队图解冒泡排序
一、说在前面一直想写一些简单易懂的文章,因为平时看的很多的书籍或者文章都是看着很难受的感觉,当然,这并不是说书籍写的不好,只是说对于一些没有太多基础或者基础不是很好的来说,相对来说还是比较难以理解的。这个系列主要是写一些简单易懂的数据结构与算法的文章,同时也是帮助自己再理解理解这方面的知识。作为数据结构与算法的开篇,还是以排序算法作为第一部分的内容,需要注意的是,这一系列的文章并不是涉及到很...原创 2019-02-09 13:24:02 · 605 阅读 · 0 评论 -
acm学习方法总结
建议做到50行以内的程序不用调试、100行以内的二分钟内调试成功.acm主要是考算法的,主要时间是花在思考算法上,不是花在写程序与debug上。 算法集锦https://www.cnblogs.com/ngyifeng/p/3718601.html书籍推荐入门三本:《数据结构与算法》(傅清祥,王晓东编著,我所见过的最好的算法教材)程序设计导引及在线实践 作者:...转载 2018-08-14 15:53:04 · 3035 阅读 · 0 评论 -
数据结构-顺序栈、链栈
一、堆栈的基本概念:堆栈(也简称作栈)是一种特殊的线性表,堆栈的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置进行插入和删除操作,而堆栈只允许在固定一端进行插入和删除操作。先进后出:堆栈中允许进行插入和删除操作的一端称为栈顶,另一端称为栈底。堆栈的插入和删除操作通常称为进栈或入栈,堆栈的删除操作通常称为出栈或退栈。备注:栈本身就是一个线性表,所以我们之前...原创 2018-06-17 22:13:06 · 919 阅读 · 0 评论 -
数据结构-单向循环链表、双向循环链表、仿真链表
一、单向循环链表:1、概念:单向循环链表是单链表的另一种形式,其结构特点是链表中最后一个结点的指针不再是结束标记,而是指向整个链表的第一个结点,从而使单链表形成一个环。和单链表相比,循环单链表的长处是从链尾到链头比较方便。当要处理的数据元素序列具有环型结构特点时,适合于采用循环单链表。和单链表相同,循环单链表也有带头结点结构和不带头结点结构两种,带头结点的循环单链表实现插入和删...转载 2018-06-17 21:46:54 · 821 阅读 · 0 评论 -
单链表简易教程
一、概述单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始。链式存储结构的线性表将采用一组任意的存储单元存放线性表中的数据元素。由于不需要按顺序存储,链表在插入、删除数据元素时比顺序存储要快,但是在查找一个节点时则要比顺序存储要慢使用链式存储可以克服顺序线性表需要预先知道数据大小的缺点,链表结构可以充分利用内存空间,实现灵活的内存动态管...转载 2018-06-17 21:25:17 · 935 阅读 · 0 评论 -
数据结构:线性表(java实现)
一、线性表一个线性表(Linear List)是由n(n≥0)个数据元素(结点,它可以是一个字母,数字,记录或更复杂的信息)所构成的有限序列。线性表逻辑地表示为:(a0,a1,…,an-1)。其中,n为线性表的长度,n=0时为空表。称i为ai在线性表中的位序号。然后,我们对顺序存储结构用图来做一个理解。1.1 顺序存储结构理解顺序储存结构是用数组来保存数据的。如下图: ...原创 2018-06-05 23:38:04 · 21235 阅读 · 4 评论 -
BFS算法详解
一、概述 作为搜索算法的一种,DFS对于寻找一个解的NP(包括NPC)问题作用很大。但是,搜索算法毕竟是时间复杂度是O(n!)的阶乘级算法,它的效率非常低,在数据规模变大时,这种算法就显得力不从心了。当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反转载 2017-04-06 11:24:11 · 4188 阅读 · 2 评论 -
数据结构与算法-排序与查找(java描述)
在软件开发中,有两个常见的任务,一个是某一组中查找某个特定的元素,另一个是将某一组元素按照特定的顺序排序。我们可以使用多种算法来完成这些任务,而这些算法的差异也是值得我们去仔细研究的,接下来我们探究一下这些算法。一、查找1.1、线性查找法 线性查找就是通过索引对数组data的每个元素进行遍历,如果发现要找的目标元素和数组data中的某个元素相同时,就返回已经查找到,当然,我们也是可以改进一下,就是原创 2017-03-25 17:10:50 · 1018 阅读 · 0 评论 -
算法-Valid Anagram
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/48979767Given two strings s and t, write a function to determine if t is an anagram of s.For example, s = “anagram”, t = “nagaram”,转载 2017-04-02 10:49:54 · 479 阅读 · 0 评论 -
一看就懂的动态规划入门教程
今天在网上看到一个讲动态规划的文章,是以01背包为例的,这文章和书上的讲解非常不一样,令我眼前一亮,于是转载一下下~~~ (说明一下,本人非常痛恨教材公式定理漫天飞,实际的讲解却讲得非常枯涩难懂,这种中国式的教育已经延绵了几千年了,现在中国的教材还是这个样子,讲清楚些明白些就那么难么?高中有个老师讲的一句话一直觉得很有道理:“教得会天才不是真本事,能把博士生的东西讲到小学生都会用那才是真水平。”)转载 2017-03-24 20:49:39 · 2871 阅读 · 2 评论 -
算法-动态规划(1)
什么是动态规划? 动态规划(Dynamic Programming,所以我们简称动态规划为DP)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程(multistep decision process)的优化问题时,提出了著名的最优化原理(principle of optimalit转载 2017-03-24 17:27:49 · 1166 阅读 · 0 评论 -
有关算法方面的经典书籍推荐
最近在学习算法和数据结构方面的知识,看到一篇好的关于数据结构和算法的书籍一、概要如果计算机系只开三门课,那么这三门课就一定是:离散数学,数据结构与算法,编译原理。如果只开一门课,那剩下的就一定是:数据结构与算法。Niklaus Wirth说:算法+数据结构=程序,不说废话了,下面列出一份数据结构算法书目,先从最著名的说起二、书籍简介A原书名:The Art of Computer Programmi转载 2017-03-24 19:03:45 · 30467 阅读 · 1 评论 -
数据结构与算法-二叉查找树(java描述)
一、概述二叉排序树(Binary Sort Tree)又称二叉查找树(Binary Search Tree),亦称二叉搜索树。1.1、定义二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值; (3)左、右子树也分别为二叉排序树;二、二叉查找树的实现这原创 2017-03-31 19:25:29 · 975 阅读 · 0 评论 -
数据结构与算法-二叉树(java描述)
一、概述1.1、树的概念 树状图是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点: 每个节点有零个或多个子节点;没有父节点的节点称为根节点;每一个非根节点有且只有一个父节点;除了根节点外,每个子节点可以分为多个不相交的子树1.2、树的定义树(tree)是包含n(n>0)个原创 2017-03-31 16:47:15 · 1502 阅读 · 0 评论