![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Data Struct(Java)
_BookFriend
这个作者很懒,什么都没留下…
展开
-
Java版数据结构与算法(一)
自学了一段时间的数据结构,觉得是时候把学习的内容放上来了~~看了一些的视频和pdf,想把数据结构能够学的扎实一些,从而对编程语言有更深刻的了解和认识。也同时从网上看到了一些不错的文章,也给大家贴在这里,可以省去查找的时间~《数据结构》这门课是计算机专业的核心课程,但往往却让人头痛原创 2015-01-27 17:12:03 · 1202 阅读 · 2 评论 -
剑指Offer-->调整数组顺序使奇数位于偶数前面,并按顺序排列(2种方法)
从表面看好像这道题目很简单,其实做起来并没有想象中简单,个人觉得比较困难的点在于当奇数偶数已经分开但顺序没有排列的时候,对两半部分数组进行操作是稍微有些复杂的。提供了两种解法,希望大家能够有所借鉴。import java.util.Arrays;public class reOrderArray { public void reOrderArrayDemo1(int[] arra原创 2015-05-22 09:48:53 · 735 阅读 · 0 评论 -
详谈双向链表的实现与简单操作
1.单链表的一个优点是结构简单,但是它也有一个缺点,即在单链表中只能通过一个结点的引用访问其后续结点,而无法直接访问其前驱结点,要在单链表中找到某个结点的前驱结点,必须从链表的首结点出发依次向后寻找,但是需要Ο (n)时间。为此我们可以扩展单链表的结点结构,使得通过一个结点的引用,不但能够访问其后续结点,也可以方便的访问其前驱结点。扩展单链表结点结构的方法是,在单链表结点结构中新增加一个域,该域用原创 2015-04-04 10:07:54 · 879 阅读 · 0 评论 -
详谈单链表的有关操作集锦~
1.单链表 在 Java 中没有显式的指针类型,然而实际上对象的访问就是使用指针来实现的,即在Java 中是使用对象的引用来替代指针的。因此在使用 Java 实现该结点结构时,一个结点本身就是一个对象。结点的数据域 data 可以使用一个 Object 类型的对象来实现,用于存储任何类型的数据元素,并通过对象的引用指向该元素;而指针域 next 可以通过节点对象的引用来实现。原创 2015-04-04 09:51:59 · 693 阅读 · 0 评论 -
详谈栈的实现and几个算法实现
对于栈的概念以及图解,在之前的文章中已经写过了,而代码却没有多少,恐理解肤浅,故代码献上,以求真知~(重新看数据结构算法C那本书,还有好些个经典算法。。。比如迷宫求解和汉诺塔,争取一一实现)原创 2015-04-04 10:17:48 · 556 阅读 · 0 评论 -
详谈单链表之合并and冒泡排序
线性表一章基本看完了,但是感觉还学得太少,应该和一些经典的算法相结合,看看自己应用的如何。不得不承认自己只是做简单的实现,并没有对代码进行太多的优化。。。希望各位大神莫怪~~废话少说,代码搞起~~原创 2015-04-04 09:58:28 · 631 阅读 · 0 评论 -
详谈线性表之数组合并问题(两种方法)
最近一段时间总是打不开CSDN,想发博客都发不了。。。这几天在学Oracle的过程中,把顺序表的合并搞了出来,虽然难度不大,而且思路很多,但是还是希望自己的东西可以供大家借鉴一下的~~有两种方法,其中一种用到了Java本身封装的方法,感觉十分的简单粗暴。。。import java.util.Arrays;public class SeqListTest { public static v原创 2015-03-13 17:55:51 · 741 阅读 · 0 评论 -
详谈线性表的有关操作(Java、C两种语言)
之前在学习线性表一章的时候,有些地方都是比较含糊的带过,只是把一些比较难理解的地方花了好长时间才明白。。。。然后写出代码,存在博客上面。从今天开始,将重新把数据结构这本书走一遍,用C和Java两种语言,尽量把每个部分都可以用代码实现一遍,使印象更加深刻,也算是重新学习一下C语言啦~~。而且现在新学期开始学Oracle啦,也会把一些学习过程中的代码以及重点难点记录下来,希望大家会关注哦~~原创 2015-03-15 13:48:50 · 632 阅读 · 0 评论 -
详谈排序算法之选择类排序(两种方法实现堆排序)
今天我们再来讨论一下选择类排序,选择类排序分为:简单排序,树形选择排序和堆排序。但我们主要说的是简单和堆排序两个,因为树形选择排序使用了较多的辅助空间,以及和∞进行多余比较,为弥补树形选择排序的不足之处, J.W.J.Williams 在 1964 年提出了进一步的改进方法,即堆排序.对于我个人而言。。一开始并不是很理解它的算法思想,纠结了许久。在网上查找资料的时候发现这位大神的文章思路十分清晰,原创 2015-02-24 10:32:49 · 997 阅读 · 0 评论 -
详谈排序算法之插入类排序(两种思路实现希尔排序)
1. 排序( sorting) 的功能是将一个数据元素的任意序列,重新排列成一个按关键字有序的序列。其确切的定义为: 假设有n个数据元素的序列{R1 , R2 , … , Rn},其相应关键字的序列是{K1 , K2 , … , Kn} ,通过排序要求找出下标 1 , 2 , … , n的一种排列p1 , p2 , … , pn,使得相应关键字满足如下的非递原创 2015-02-15 11:18:20 · 1081 阅读 · 0 评论 -
漫谈栈队列及后缀表达式,后缀中缀表达式间的转换
1.栈是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈的顶。 对栈的操作有进栈和出栈,而基本上也只有这两种操作。2.栈的实现 由于栈是一个表,因此任何实现表的方法都能实现栈。第一种(链表实现):单链表,通过在表的顶端元素插入实现push,通过删除表顶端元素实现pop。第二种(数组实现):避免了链,而是追求更好的解决方案。3.原创 2015-01-29 22:12:02 · 1066 阅读 · 0 评论 -
漫谈二叉搜索树的基本算法(三种思路实现查询操作)
前面我们说了二叉树前序中序后序遍历的递归非递归算法的实现,下面我们再来说说二叉搜索树~ 二叉排序树分为静态查找(find)和动态查找(insert、delete) 二叉搜索树:一棵二叉树,可以为空;如果不为空,满足下列性质: 1.非空左子树的所有键值小于其根结点的键值。 2.非空右子树的所有键值大于其根结点的键值 3.左右子树都是二叉搜索树!!原创 2015-02-10 21:28:47 · 825 阅读 · 0 评论 -
详谈排序算法之交换类排序(两种方法实现快速排序【思路一致】)
1.冒泡排序 起泡排序的思想非常简单。首先,将 n 个元素中的第一个和第二个进行比较,如果两个元素的位置为逆序,则交换两个元素的位置;进而比较第二个和第三个元素关键字,如此类推,直到比较第 n-1 个元素和第 n 个元素为止;上述过程描述了起泡排序的第一趟排序过程,在第一趟排序过程中,我们将关键字最大的元素通过交换操作放到了具有 n 个元素的序列的最一个位置上。然后进行第二趟排序,在第二趟原创 2015-02-23 00:18:24 · 1255 阅读 · 0 评论 -
漫谈二叉树之非递归遍历算法(两种不同思路)+层序遍历
前言: 上一篇文章,我们讨论了二叉树的递归遍历。而对于二叉树来说,最简单的也莫过于它的递归遍历了。在学习非递归遍历的时候,不得不说。。一点头绪都没有(一开始,二叉树的非递归遍历真的感觉好难懂,思路一直没法理顺,想先放过,看后面章节的内容,结果发现二叉查找树、优先队列中的二叉堆问题等等,都和树有着很多的联系。虽然解决他们的方法和非递归遍历没有太大的关系,但却能够说明自己对树的理解是否深刻。因原创 2015-02-04 17:27:58 · 1068 阅读 · 2 评论 -
漫谈二叉树之递归遍历算法(两种不同的思路)
1.为什么要研究二叉树在进一步讨论树的存储结构机器操作之前,先讨论一种简答而及其重要的树结构——二叉树。因为任何树都可以转化为二叉树处理,并且二叉树适合计算机的存储和处理,是一种非常实用的操作,并且值得深究~先给大家看一个比较简单清晰的能够说明树结构的代码~import java.util.ArrayList;import java.util.List;/** * * @原创 2015-02-01 21:29:01 · 1200 阅读 · 1 评论 -
Java版数据结构与算法(二)
不能总放上一些概念和从别人那里转来的文章吧。。我会一直按着章节把原先的内容提炼出来,并把一些比较重要的代码附上~第二章:表(一)线性表1.抽象数据类型(ADT): 是带有一组操作的一些对象的集合。抽象数据类型是数学的抽象。2.表ADT: 表的简单数组实现,这种方式解决由于使用数组而产生的最严重的问题,即从历史上看为了使用一个数组,需要对表的大原创 2015-01-27 17:19:45 · 748 阅读 · 0 评论 -
剑指Offer-->栈的压入、弹出序列(★★★★★)
栈的难度不大,但是在剑指Offer中很多题目涉及到此,其中的难度我觉得也没有很简单,为了要通过牛客网的编译还真是不简单,要考虑的东西还是蛮多的。。。毕竟要通过所有的测试用例。此题:栈的压入与弹出序列,对栈的应用我觉得还是很全面的,是一个非常不错的题目。其中部分代码也有所解释~package T19;import java.util.ArrayList;import java.util原创 2015-07-24 14:48:57 · 587 阅读 · 0 评论