数据结构和算法
股海孙悟空
wx 公众号 股海孙悟空
展开
-
各种排序算法的分析及java实现
排序一直以来都是让我很头疼的事,以前上《数据结构》打酱油去了,整个学期下来才勉强能写出个冒泡排序。由于下半年要准备工作了,也知道排序算法的重要性(据说是面试必问的知识点),所以又花了点时间重新研究了一下。 排序大的分类可以分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序。下面讲的排序都是属于内排序。 内排序有可以原创 2017-09-14 14:26:44 · 379 阅读 · 0 评论 -
数据结构Java实现03----单向链表的插入和删除
文本主要内容: 链表结构单链表代码实现单链表的效率分析 一、链表结构: (物理存储结构上不连续,逻辑上连续;大小不固定) 概念: 链式存储结构是基于指针实现的。我们把一个数据元素和一个指针称为结点。 数据域:存数数据元素信息的域。 指针域:存储直接后继位置的域。 链式存储结构是用指针把相互直接关原创 2017-09-15 09:16:51 · 400 阅读 · 0 评论 -
数据结构Java实现01----算法概述
【正文】 一、数据结构涵盖的内容: 二、算法的基本概念: 1、算法的概念: Algorithm,是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或者多个操作。 2、算法的特性: 有穷性:指令序列是有限的确定性:每条语句的含义明确,无二义性可行性:每条语句都应在有限的时间内完成输入:零个或者多个输入原创 2017-09-15 09:19:41 · 743 阅读 · 0 评论 -
数据结构Java实现02----线性表与顺序表
本节内容: 线性结构线性表抽象数据类型顺序表顺序表应用 一、线性结构: 如果一个数据元素序列满足: (1)除第一个和最后一个数据元素外,每个数据元素只有一个前驱数据元素和一个后继数据元素; (2)第一个数据元素没有前驱数据元素; (3)最后一个数据元素没有后继数据元素。 则称这样的数据结构为线性结构。 二、线性表抽象数据类型:原创 2017-09-15 09:18:17 · 368 阅读 · 0 评论 -
数据结构Java实现04----循环链表、仿真链表
单向循环链表双向循环链表仿真链表 一、单向循环链表: 1、概念: 单向循环链表是单链表的另一种形式,其结构特点是链表中最后一个结点的指针不再是结束标记,而是指向整个链表的第一个结点,从而使单链表形成一个环。 和单链表相比,循环单链表的长处是从链尾到链头比较方便。当要处理的数据元素序列具有环型结构特点时,适合于采用循环单链表。 和单链表相同,循环单链表也有带头原创 2017-09-15 09:09:43 · 2445 阅读 · 3 评论 -
数据结构Java实现05----栈:顺序栈和链式堆栈
一、堆栈的基本概念: 堆栈(也简称作栈)是一种特殊的线性表,堆栈的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置进行插入和删除操作,而堆栈只允许在固定一端进行插入和删除操作。 先进后出:堆栈中允许进行插入和删除操作的一端称为栈顶,另一端称为栈底。堆栈的插入和删除操作通常称为进栈或入栈,堆栈的删除操作通常称为出栈或退栈。 备注:栈本身就是一个线性表,原创 2017-09-15 09:08:26 · 581 阅读 · 0 评论 -
数据结构Java实现06----中缀表达式转换为后缀表达式
本文主要内容: 表达式的三种形式中缀表达式与后缀表达式转换算法 一、表达式的三种形式: 中缀表达式:运算符放在两个运算对象中间,如:(2+1)*3。我们从小做数学题时,一直使用的就是中缀表达式。后缀表达式:不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则),如:2 1 + 3 *。又比如3+(6-4/2)*5=原创 2017-09-14 15:40:36 · 300 阅读 · 0 评论 -
数据结构Java实现07----队列:顺序队列&顺序循环队列、链式队列、顺序优先队列
一、队列的概念: 队列(简称作队,Queue)也是一种特殊的线性表,队列的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置插入和删除,而队列只允许在其一端进行插入操作在其另一端进行删除操作。 队列中允许进行插入操作的一端称为队尾,允许进行删除操作的一端称为队头。队列的插入操作通常称作入队列,队列的删除操作通常称作出队列。 下图是一个依次向队列中插原创 2017-09-14 15:39:20 · 416 阅读 · 0 评论 -
链表面试题Java实现【重要】
本文包含链表的以下内容: 1、单链表的创建和遍历 2、求单链表中节点的个数 3、查找单链表中的倒数第k个结点(剑指offer,题15) 4、查找单链表中的中间结点 5、合并两个有序的单链表,合并之后的链表依然有序【出现频率高】(剑指offer,题17) 6、单链表的反转【出现频率最高】(剑指offer,题16) 7、从尾到头打印原创 2017-09-14 15:10:16 · 344 阅读 · 1 评论 -
栈和队列的面试题Java实现
栈和队列: 面试的时候,栈和队列经常会成对出现来考察。本文包含栈和队列的如下考试内容: (1)栈的创建 (2)队列的创建 (3)两个栈实现一个队列 (4)两个队列实现一个栈 (5)设计含最小函数min()的栈,要求min、push、pop、的时间复杂度都是O(1) (6)判断栈的push和pop序列是否一致 1、栈原创 2017-09-14 15:06:34 · 329 阅读 · 0 评论 -
重温数据结构:哈希 哈希函数 哈希表
什么是 Hash Hash(哈希),又称“散列”。 散列(hash)英文原意是“混杂”、“拼凑”、“重新表述”的意思。 在某种程度上,散列是与排序相反的一种操作,排序是将集合中的元素按照某种方式比如字典顺序排列在一起,而散列通过计算哈希值,打破元素之间原有的关系,使集合中的元素按照散列函数的分类进行排列。 在介绍一些集合时,我们总强调需要重写某个类的 equlas() 方法转载 2017-10-25 14:23:16 · 359 阅读 · 0 评论