数据结构
EntevEntey
这个作者很懒,什么都没留下…
展开
-
数据结构之链表
基本概念链表是一种基本的数据结构类型,它由一个个结点组成。每一个结点包括一个数据的存储和一个指向下一个结点的引用。在这个定义中,结点是一个可能含有任意类型数据的抽象实体,它所包含的指向结点的应用显示了它在构造链表之中的作用。和递归程序一样,递归数据结构的概念一开始也令人费解,但其实它的简洁性赋予了它巨大的价值。代码实现public class LinkedList { private原创 2016-05-24 00:19:59 · 317 阅读 · 0 评论 -
数据结构之队列
基本概念队列是一种基本的数据结构,它在结构两端都有限制,插入只能在一段进行,而删除只能在另一端进行。允许删除的一端叫队尾,允许插入的一段叫队头。队列拥有先进先出的特点,又称为FIFO表。 代码实现 队列根据其内部实现方式的不同,分为用链表实现的链队和用数组实现的顺序队。链表实现:public class Queue { private Node First;//定义头节点 pr原创 2016-05-28 19:44:47 · 428 阅读 · 0 评论 -
数据结构之栈的实现
基本概念栈(下压栈)是一种典型的数据集合类型,其内部的数据存储方式采用先进后出的方式。当你在栈内部添加一个元素后,再次添加的元素会处于旧元素的上层,你可以想象一叠邮件放在桌上,你每看完一个新的邮件放在邮件堆上时,最顶上的邮件就是你最新看完的邮件,而老的邮件就被压在了底层。这就是一种典型的栈结构。 代码实现下面我将用java语言来实现栈结构,数据底层使用数组方法。public class Sta原创 2016-05-18 01:37:21 · 516 阅读 · 0 评论 -
算法之自顶向下的归并排序
基本概念试想一个操作,将一个数组(默认为无序)切割成两段,然后分别进行排序,然后将结果结合在进行排序归并。在数据结构之中这是一种简单的递归归并排序算法,是应用高效算法设计中分治思想的典型例子。 归并排序的基本逻辑是,要对数组[min,max]进行排序,先把他分成[min,mid]和[mid + 1, max]两个数组,分别进行排序最后归并起来。 代码实现接下来我将用java语言完成代码的描述。原创 2016-05-19 01:04:07 · 1616 阅读 · 0 评论 -
算法之自底向上的归并排序
基本概念之前使用自顶向下的归并排序,我们的主要思想是将一个大问题分成一个小问题,通过解决一个一个小问题来最终完成大问题。既然我们可以通过化整为零的方式Coding,那么是不是也可以由简入繁,由下到上? 仔细一想,我们可以先归并小数组,在成对的归并得到的较小数组,通过不断往复循环,归并大的数组。简单来说,就是两两归并,四四归并,八八归并。代码实现public class MergeSort原创 2016-05-20 22:58:35 · 4628 阅读 · 1 评论 -
算法之希尔排序
基本概念希尔排序是一种基于插入排序的快速排序算法。相较于传统的插入排序,他在处理大规模乱序数组时具有较大优势。试想一个无序数组,其最小值在数组末端,那么如果使用传统的插入排序,只能通过交换相邻的元素一个一个地把最小值移动到第一个,显然效率不高。希尔排序将整个数组分成若干个序列(序列的长度叫“增量”),对每一个序列进行插入排序,然后依次缩减增量再进行插入排序。随着增量的减小以及数组的局部有序化,数组原创 2016-05-22 00:15:56 · 294 阅读 · 0 评论 -
算法之快速排序
基本概念快速排序是一种分治的排序算法。它将一个数组分成两个子数组,将两部分独立的排序。当两个数组都有序时整个数组也就自然有序了。在快速排序中,切分的位置取决于数组的内容。切分的关键在于使数组满足下面三个条件: 1. 对于某个下表j,数组[j]的位置已经选定; 2. 数组[0]到数组[j-1]中的所有元素都不大于数组[j]; 3. 数组[j+1]到数组[length-1]的所有元素都不小原创 2016-07-04 14:40:00 · 720 阅读 · 1 评论