
数据结构与算法
文章平均质量分 96
itzilong
这个作者很懒,什么都没留下…
展开
-
数据结构-链表(list)
谈到链表之前,先说一下线性表。线性表是最基本、最简单、也是最常用的一种数据结构。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。线性表有两种存储方式,一种是顺序存储结构,另一种是链式存储结构。顺序存储结构就是两个相邻的元素在内存中也是相邻的。这种存储方式的优点是查询的时间复杂度为O(1),通过首地址和偏移量就可以直接访问到某元素,关转载 2017-07-18 09:56:38 · 370 阅读 · 0 评论 -
java数据结构与算法-高级排序-归并排序
一、归并排序实现代码如下:package com.tool.wpn.quicksort;import android.util.Log;/** * Created by Xi on 2017/8/12. * 归并排序 */public class ArrayMerge { private long[] theArray;//需排序的数组 private int原创 2017-08-15 10:35:44 · 377 阅读 · 0 评论 -
java数据结构与算法-高级排序-堆排序
一、堆排序是一种树形选择排序,是对直接选择排序的有效改进。 堆的定义如下:具有n个元素的序列(k1,k2,...,kn),当且仅当满足 时称之为堆。由堆的定义可以看出,堆顶元素(即第一个元素)必为最小项(小顶堆)。若以一维数组存储一个堆,则堆对应一棵完全二叉树,且所有非叶结点的值均不大于(或不小于)其子女的值,根结点(堆顶元素)的值是最小(或最大)的。如: (a)大原创 2017-09-04 11:15:32 · 357 阅读 · 0 评论 -
java数据结构与算法-线性探测哈希表
一、线性探测哈希表代码如下:package com.tool.wpn.quicksort;import android.util.Log;/** * Created by Xi on 2017/8/15. * 线性探测哈希表 */public class HashTableLin { private final String TAG="HashTableLin";原创 2017-08-16 10:44:16 · 1649 阅读 · 0 评论 -
java数据结构和算法的概述
一、概述数据结构:对计算机内存中的数据的一种安排。算法:对结构中的数据进行各种处理。二、应用方面:1、现实世界数据存储;2、程序员的工具;3、现实世界的建模。三、各数据结构优缺点数据结构类别 优点 缺点 链接 备注 无序数组 插入快,可以直接放到末尾O(1) 查找慢O(N)、删除慢O(N)、大小固定 点击打开链接...原创 2017-07-17 17:01:49 · 554 阅读 · 0 评论 -
数据结构-数组
1、普通数组(无序数组)/** * 普通数组的Java代码 * @author xijie * */public class GeneralArray { private int[] a; private int size; //数组的大小 private int nElem; //数组中有多少项 public GeneralArray(int max){原创 2017-07-17 17:40:55 · 336 阅读 · 0 评论 -
java数据结构与算法-双向链表
一、双向链表import android.util.Log;/** * Created by Xi on 2017/8/1. * 双向链表 */public class LinkListDouble { private LinkDouble first; private LinkDouble last; public LinkListDouble(){原创 2017-08-15 10:13:47 · 363 阅读 · 0 评论 -
java数据结构与算法-双端链表
一、创建双端链表import android.util.Log;/** * Created by Xi on 2017/7/30. * 双端链表 */public class LinkListFirstLast { private static final String TAG="LinkListFirstLast"; private LinkFirstLast原创 2017-08-14 18:33:50 · 348 阅读 · 0 评论 -
java数据结构与算法-单链表
一、创建单链表/** * Created by Xi on 2017/7/30. * 单链表 */public class LinkListSingle { private static final String TAG="LinkListSingle"; private LinkSingle first;//单链表的第一个元素 public LinkList原创 2017-08-14 18:31:41 · 417 阅读 · 0 评论 -
java数据结构与算法-红黑树
1、二叉树:非平衡树2、红黑树:(平衡树)增加某些特点的二叉搜索树。特征:(1)、节点都有颜色;(2)、在插入和删除的过程中,要遵循保持这些颜色的不同排列的规则;红-黑规则:1、每个节点不是红色就是黑色;2、根总是黑色的;3、如果节点是红色,则它的子节点必须是黑色的(反之不一定必须);4、从根到叶节点或空子节点的每条路径,必须包含相同数量的黑色节点;原创 2017-09-01 10:44:11 · 386 阅读 · 0 评论 -
数据结构-树
阅读目录1. 二叉树2. 二叉查找树3. 平衡二叉树3.1 平衡查找树之AVL树3.2 平衡二叉树之红黑树4. B树5. B+树6. B*树7. Trie树 数据结构中有很多树的结构,其中包括二叉树、二叉搜索树、2-3树、红黑树等等。本文中对数据结构中常见的几种树的概念和用途进行了汇总,不求严格精准,但求简单易懂。回到顶部1转载 2017-07-25 13:43:45 · 348 阅读 · 0 评论 -
java数据结构与算法-2-3-4树
一、2-3-4树特点:1、每个节点最多可以存三个数据项;2、对于非叶节点:有一个数据项的节点总是有两个子节点;有两个数据项的节点总是有三个子节点;有三个数据项的节点总是有四个子节点; L:表示子节点个数 D;表示数据项个数 针对非叶节点:L=D+1 子节点个数=数据项个数+1; 3、插入数据时数据总是插入在叶节点原创 2017-09-01 10:53:03 · 440 阅读 · 0 评论 -
java数据结构与算法-二叉树
一、树节点代码如下:import android.util.Log;/** * Created by XiJie on 2017/8/13. * 树中结点 */public class Node { public int iData;//结点id public double dData;//结点值 public Node leftChild;//左子结点原创 2017-08-29 16:15:39 · 538 阅读 · 0 评论 -
java数据结构与算法-简单排序-冒泡排序
冒泡排序规则:实现代码如下:/** * 简单排序-冒泡排序 * * @param array */ private void sortSimpleBubble(int[] array) { int count = 0; int size = array.length; for (in原创 2017-08-14 17:58:34 · 382 阅读 · 0 评论 -
java数据结构与算法-简单排序-选择排序
代码如下: /** * 简单排序-选择排序 */ private void sortSimpleSelect(int[] array) { int minIndex = 0; int size = array.length; for (int i = 0; i < size - 1; i++) {//循环比较的数,从左原创 2017-08-14 18:05:27 · 372 阅读 · 0 评论 -
java数据结构与算法-简单排序-插入排序
代码如下:/** * 简单排序-插入排序 */ private void sortSimpleInsert(int[] array) { int length = array.length; int in, out; for (out = 1; out < length; out++) {//假设第一个位置的数是正确的原创 2017-08-14 18:10:49 · 340 阅读 · 0 评论 -
java数据结构与算法-高级排序-基数排序
基数排序:是按照低位先排序,然后收集;再按照高位排序,然后再收集;依次类推,直到最高位。有时候有些属性是有优先级顺序的,先按低优先级排序,再按高优先级排序。最后的次序就是高优先级高的在前,高优先级相同的低优先级高的在前。基数排序基于分别排序,分别收集,所以是稳定的。原创 2017-08-15 10:53:09 · 409 阅读 · 0 评论 -
java数据结构与算法-高级排序-希尔排序
一、希尔排序实现代码如下:package com.tool.wpn.quicksort;import android.util.Log;/** * Created by Xi on 2017/8/13. * 希尔排序 */public class ArrayShell { private long[] theArray; private int nElems;原创 2017-08-15 10:38:26 · 358 阅读 · 0 评论 -
java数据结构与算法-递归解决汉诺塔问题
一、主函数调用如下int nDisks=3;//塔层数,即盘数tower_recursion(nDisks,'A','B','C');二、递归解决汉诺塔 /** * 递归解决汉诺塔问题 * @param topN 第几层盘子 * @param from 原柱 * @param inter 临时柱 * @param to 目标柱原创 2017-08-15 10:22:29 · 482 阅读 · 0 评论 -
数组结构-栈和队列
1、栈栈只允许访问一个数据项:即最后插入的数据。溢出这个数据才能访问倒数第二个插入的数据项。它是一种"后进先出"的数据结构。栈最基本的操作是出栈(Pop)、入栈(Push),还有其他扩展操作,如查看栈顶元素,判断栈是否为空、是否已满,读取栈的大小等。原创 2017-07-17 18:09:31 · 402 阅读 · 0 评论 -
java数据结构与算法-再哈希法哈希表
一、再哈希法哈希表代码如下:package com.tool.wpn.quicksort;import android.util.Log;/** * Created by Xi on 2017/8/15. * 再哈希法哈希表 */public class HashTableAgain { private final String TAG="HashTableAgain原创 2017-08-16 10:50:13 · 794 阅读 · 1 评论 -
java数据结构与算法-链地址法哈希表
一、链地址法哈希表代码如下:package com.tool.wpn.quicksort;import android.util.Log;/** * Created by Xi on 2017/8/16. * 链地址式哈希表 */public class HashTablelink { private final String TAG="HashTablelink";原创 2017-08-16 11:57:58 · 1531 阅读 · 1 评论 -
java数据结构与算法-简单排序-选择排序
代码如下: /** * 简单排序-选择排序 */ private void sortSimpleSelect(int[] array) { int minIndex = 0; int size = array.length; for (int i = 0; i < size - 1; i++) {//循环比较的数,原创 2017-08-16 10:43:48 · 250 阅读 · 0 评论 -
java数据结构与算法-堆
一、堆代码如下:package com.tool.wpn.quicksort;/** * Created by Xi on 2017/8/17. * 堆,数据结构是树,底层用数组实现 */public class Heap { private NodeHeap[] heapArray; private int maxSize;//最大容纳元素个数 priv原创 2017-08-17 18:25:10 · 397 阅读 · 0 评论 -
java数据结构与算法-图简介、图搜索、图最小生成树
一、基本概念图是用于对数据间关系进行编码的一种机制,是与树有些相似的数据结构。图分为:有向图、无向图。连通图、非连通图。带权图、无全图。图的搜索:深度优先搜索(DFS)广度优先搜索(BFS)二、下面用代码来实现1、先将图的基本构成实现了/** * Created by xi on 2017/8/19. * 图 */p原创 2017-08-20 17:11:37 · 584 阅读 · 0 评论 -
java数据结构与算法-有向图的拓扑排序
一、以下为有向图经过拓扑排序如下:二、实现代码,首先实现拓扑排序如下:package com.tool.wpn.quicksort;import android.util.Log;/** * Created by xi on 2017/8/19. * 图-有向图、拓扑排序 */public class GraphTopo { private fin原创 2017-08-21 10:59:21 · 1547 阅读 · 0 评论 -
java数据结构与算法-有序数组二分查找
一、首先创建有序数组的class,并且提供插入、二分查找功能。/** * Created by Xi * 有序数组二分查找 */public class ArrayOrderBinary { private long[] orderArray;//有序数组 private int nElems;//数组里元素数量,没插入一个才会增加 public Arra原创 2017-08-14 17:44:26 · 583 阅读 · 0 评论 -
java数据结构与算法-队列
一、创建队列** * 该队列底层是通过数组实现的,可指定大小。 * 是通过front与rear指针来实现元素的添加与删除,每次添加与删除不会真正的移动数组元素的位置。 * Created by Xi on 2017/7/29. */public class Queue { private long[] queArray; private int maxSize;//原创 2017-08-14 18:23:04 · 313 阅读 · 0 评论 -
java数据结构与算法-优先级队列
一、优先级队列/** * Created by Xi on 2017/7/29. * 优先级队列,及队列中的元素是有顺序的。跟普通队列相比,主要是插入元素时,需找到对应的位置才能插。 */public class PriorQueue { private long[] queArray; private int maxSize;//队列最大值 private原创 2017-08-14 18:26:33 · 369 阅读 · 0 评论 -
java数据结构与算法-栈
一、创建栈/** * Created by Xi on 2017/7/29. * 栈 */public class Stack { private long[] stackArray; private int maxSize;//栈最大容量 private int top;//栈顶 public Stack(int size){ max原创 2017-08-14 18:28:59 · 301 阅读 · 0 评论 -
java数据结构与算法-用链表实现栈
一、代码如下/** * Created by Xi on 2017/8/1. * 用链表实现栈 */public class StackLink { private LinkListStack theList; public StackLink(){ theList=new LinkListStack(); } /** *原创 2017-08-15 10:02:33 · 313 阅读 · 0 评论 -
java数据结构与算法-双端链表实现队列
一、使用双端链表实现队列代码如下:import android.util.Log;/** * Created by Xi on 2017/8/1. * 使用链表实现队列的队列 */public class QueueLink { private LinkListQueue theList; public QueueLink(){ theList=n原创 2017-08-15 10:08:26 · 372 阅读 · 0 评论 -
java数据结构与算法-有序链表
一、有序链表/** * Created by Xi on 2017/7/30. * 有序链表 */public class LinkListOrderly { private static final String TAG="LinkListOrderly"; private LinkFirstLast first;//单链表的第一个元素 public Lin原创 2017-08-15 10:10:51 · 330 阅读 · 0 评论 -
java数据结构与算法-递归二分查找
一、递归二分查找代码如下package com.tool.wpn.quicksort;import android.util.Log;/** * Created by Xi on 2017/8/12. * 递归二分查找 */public class ArrayOrderRecursion { private long[] orderArray;//有序数组原创 2017-08-15 10:18:51 · 446 阅读 · 0 评论 -
java数据结构与算法-高级排序-快速排序
一、快速排序实现代码如下:package com.tool.wpn.quicksort;import android.util.Log;/** * Created by Xi on 2017/8/13. * 快速排序 */public class ArrayQuick { private long[] theArray;//需排序的数组 private int原创 2017-08-15 10:41:15 · 388 阅读 · 0 评论