关闭

数据结构之堆的定义

基本概念 堆是一种基本的数据结构。在这里我用数组来形容,在一个二叉堆的数组中,每一个元素都要保证大于等于另外两个特定位置的元素。同时相应的,这些元素又要大于等于另外两个相应位置的元素,整个数据结构以此类推。如果我们将整个数据结构画成树状结构,就能够清晰地看出整个结构的样子。 图片中显示的是最大堆和最小堆,两者的原理近似,这里我们讨论最大堆的实现。当一颗二叉树的每个结点都大于等于它的两个子节点时...
阅读(1568) 评论(0)

算法之快速排序

基本概念 快速排序是一种分治的排序算法。它将一个数组分成两个子数组,将两部分独立的排序。当两个数组都有序时整个数组也就自然有序了。在快速排序中,切分的位置取决于数组的内容。切分的关键在于使数组满足下面三个条件: 1. 对于某个下表j,数组[j]的位置已经选定; 2. 数组[0]到数组[j-1]中的所有元素都不大于数组[j]; 3. 数组[j+1]到数组[length-1]的所有元素都不小...
阅读(405) 评论(1)

贪吃蛇的java代码分析(三)

代码剖析 在上一篇文章中,我们完成了贪吃蛇部分代码的构造。回头审视我们写的代码与思路,会发现我们遗漏了一个重要的地方,那就是:贪吃蛇的自身移动。想必大家都知道,贪吃蛇自身是会自己移动的,并且会跟随你的方向来不断移动。我们需要在代码中来体现这个功能,那么如何体现呢?查阅API,我们发现了一个TIMER类。API中的描述是:在指定时间间隔触发一个或多个ActionEvent,一个实例用法就是动画对象,它...
阅读(5610) 评论(1)

贪吃蛇的java代码分析(二)

代码剖析 贪吃蛇是一款十分经典的小游戏,对初入coding的朋友来说,拿贪吃蛇这样一个案例来练手十分合适,并不高的难度和成功后的成就感都是学习所必须的。下面我将依照我当时的思路,来逐步分析实现的整个过程。让我们逐一分析。首先,整个游戏最基本的元素是地图。在java中用于绘图的类是swing和awt,在这里主要用到swing类。swing中用于窗口显示的类有JFrame及其子类。JFrame可以直接添...
阅读(5987) 评论(4)

贪吃蛇的java代码分析(一)

自我审视 最近自己学习java已经有了一个多月的时间,从一开始对变量常量的概念一无所知,到现在能勉强写几个小程序玩玩,已经有了长足的进步。今天没有去学习,学校里要进行毕业答辩和拍毕业照了,于是请了几天的假,自己也就有了一点空余的时间。回想这一个多月,自己做到好的地方是把大部分时间都用在了看书和码代码上,学习的重点放在了追求对知识的理解和内容的广度之上。书籍方面阅读了《java核心技术》和《jav...
阅读(10566) 评论(1)

数据结构之队列

基本概念 队列是一种基本的数据结构,它在结构两端都有限制,插入只能在一段进行,而删除只能在另一端进行。允许删除的一端叫队尾,允许插入的一段叫队头。队列拥有先进先出的特点,又称为FIFO表。 代码实现 队列根据其内部实现方式的不同,分为用链表实现的链队和用数组实现的顺序队。 链表实现:public class Queue { private Node First;//定义头节点 pr...
阅读(204) 评论(0)

数据结构之链表

基本概念 链表是一种基本的数据结构类型,它由一个个结点组成。每一个结点包括一个数据的存储和一个指向下一个结点的引用。在这个定义中,结点是一个可能含有任意类型数据的抽象实体,它所包含的指向结点的应用显示了它在构造链表之中的作用。和递归程序一样,递归数据结构的概念一开始也令人费解,但其实它的简洁性赋予了它巨大的价值。 代码实现 public class LinkedList { private...
阅读(123) 评论(0)

算法之希尔排序

基本概念 希尔排序是一种基于插入排序的快速排序算法。相较于传统的插入排序,他在处理大规模乱序数组时具有较大优势。试想一个无序数组,其最小值在数组末端,那么如果使用传统的插入排序,只能通过交换相邻的元素一个一个地把最小值移动到第一个,显然效率不高。希尔排序将整个数组分成若干个序列(序列的长度叫“增量”),对每一个序列进行插入排序,然后依次缩减增量再进行插入排序。随着增量的减小以及数组的局部有序化,数组...
阅读(131) 评论(0)

算法之自底向上的归并排序

基本概念 之前使用自顶向下的归并排序,我们的主要思想是将一个大问题分成一个小问题,通过解决一个一个小问题来最终完成大问题。既然我们可以通过化整为零的方式Coding,那么是不是也可以由简入繁,由下到上? 仔细一想,我们可以先归并小数组,在成对的归并得到的较小数组,通过不断往复循环,归并大的数组。简单来说,就是两两归并,四四归并,八八归并。 代码实现 public class MergeSort...
阅读(987) 评论(0)

算法之自顶向下的归并排序

基本概念 试想一个操作,将一个数组(默认为无序)切割成两段,然后分别进行排序,然后将结果结合在进行排序归并。在数据结构之中这是一种简单的递归归并排序算法,是应用高效算法设计中分治思想的典型例子。 归并排序的基本逻辑是,要对数组[min,max]进行排序,先把他分成[min,mid]和[mid + 1, max]两个数组,分别进行排序最后归并起来。 代码实现 接下来我将用java语言完成代码的描述。...
阅读(486) 评论(0)

数据结构之栈的实现

基本概念 栈(下压栈)是一种典型的数据集合类型,其内部的数据存储方式采用先进后出的方式。当你在栈内部添加一个元素后,再次添加的元素会处于旧元素的上层,你可以想象一叠邮件放在桌上,你每看完一个新的邮件放在邮件堆上时,最顶上的邮件就是你最新看完的邮件,而老的邮件就被压在了底层。这就是一种典型的栈结构。 代码实现 下面我将用java语言来实现栈结构,数据底层使用数组方法。public class Sta...
阅读(245) 评论(0)
    个人资料
    • 访问:26638次
    • 积分:410
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:0篇
    • 译文:0篇
    • 评论:7条
    文章分类
    文章存档
    最新评论