java数据结构及算法
翟长青
这个作者很懒,什么都没留下…
展开
-
二叉树的遍历(递归与非递归)
背景 2013-10-7 修订部分内容 2014-5-24 修改后序非递归部分代码 本文讨论二叉树的常见遍历方式的代码(Java)实现,包括前序(preorder)、中序(inorder)、后序(postorder)、层序(level order),进一步考虑递归和非递归的实现方式。 递归的实现方法相对简单,但由于递归的执行方式每次都会产生一个新的方法调用栈,如果递归层级较转载 2014-07-18 08:58:22 · 488 阅读 · 0 评论 -
java版快速排序
Java非递归方式实现快速排序 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30原创 2015-02-26 14:54:54 · 420 阅读 · 0 评论 -
单链表就地逆置(Java版),单链java版
题目:有一个线性表(a1,a2,a3,...,an),采用带头节点的单链表L存储,设计一个算法将其就地逆置,线性表变为(an,...a3,a2,a1)。所谓“就地”指辅助存储空间为O(1)。 解题思路: 如果是顺序存储的话,我们很容易想到解题思路,利用1个辅助变量让第1个元素与第n个元素交换,然后再利用这个辅助变量让第2个元素与第n-1个元素交换,...最后利用这个辅助变量让第转载 2015-02-26 14:59:34 · 1926 阅读 · 0 评论 -
单链表的翻转
前面我们大约把单链表 ADT 的基本操作都过了一遍,但是这还不够。单链表在面试与笔试中出现的几率很高,接下来我们再花点时间把常见的单链表面试题尽可能过一遍,彻底掌握单链表~ 那开始我们的第一个面试题?不妨做做“单链表反转”,或者说“单链表逆序”吧?还是基于前面的例子。 究竟要如何反转呢?我们不妨拿一个例子来说明一下算法。 我先画一个单链表,这个单链转载 2015-02-27 15:09:46 · 361 阅读 · 0 评论 -
JAVA设计模式之单例模式
概念: java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种。 单例模式有一下特点: 1、单例类只能有一个实例。 2、单例类必须自己自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、转载 2015-03-10 22:15:36 · 334 阅读 · 0 评论 -
二叉树的前序、中序、后序遍历
递归方式: /** * 实现二叉树的创建、前序遍历、中序遍历和后序遍历 **/ package DataStructure; /** * Copyright 2014 by Ruiqin Sun * All right reserved * created on 2014-9-9 下午2:34:15 **/ public原创 2016-03-22 22:46:06 · 431 阅读 · 0 评论 -
java实现两个有序数组的合并
思想:先依次比较两个数组,按照小的就传入新的数组。当这次比较完之后可能有一个数组的长度很长,留下一些数组,然后在新数组的末尾插入即可。 代码: 1 class ArraySort 2 { 3 //两个有序数组的合并函数 4 public static int[] MergeList(int a[],int b[]) 5 { 6原创 2016-03-23 10:37:14 · 4442 阅读 · 1 评论 -
各种排序算法的分析及java实现
排序一直以来都是让我很头疼的事,以前上《数据结构》打酱油去了,整个学期下来才勉强能写出个冒泡排序。由于下半年要准备工作了,也知道排序算法的重要性(据说是面试必问的知识点),所以又花了点时间重新研究了一下。 排序大的分类可以分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序。下面讲的排序都是属于内排序。 内排序有可以分为以下原创 2014-07-15 10:20:30 · 619 阅读 · 0 评论