
数据结构与算法
文章平均质量分 81
Jack-Chan
非NB非知名Android开发者
展开
-
Java数据结构和算法:图
图的基本概念1. 图的定义定义:图(graph)是由一些点(vertex)和这些点之间的连线(edge)所组成的;其中,点通常被成为”顶点(vertex)”,而点与点之间的连线则被成为”边或弧”(edege)。通常记为,G=(V,E)。2. 图的种类根据边是否有方向,将图可以划分为:无向图和有向图。2.1 无向图上面的图G0是无向图,无向图的所有的边都是不区分方向的。G0=(V1,{E1})。其中,转载 2017-01-04 15:38:16 · 1385 阅读 · 0 评论 -
HashMap源码剖析
HashMap简介HashMap是基于哈希表实现的,每一个元素都是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阈值)时,同样会自动增长。HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap。HashMap实现了Serializable接口,因此它支持序列化,实现了Cloneable接口,能转载 2017-01-07 22:29:32 · 452 阅读 · 0 评论 -
LinkedList源码剖析
LinkedList简介LinkedList是基于双向循环链表(从源码中可以很容易看出)实现的,除了可以当作链表来操作外,它还可以当作栈,队列和双端队列来使用。LinkedList同样是非线程安全的,只在单线程下适合使用。LinkedList实现了Serializable接口,因此它支持序列化,能够通过序列化传输,实现了Cloneable接口,能被克隆。LinkedList源码剖析LinkedLis转载 2017-01-08 00:11:35 · 410 阅读 · 0 评论 -
LinkedHashMap源码剖析
LinkedHashMap简介LinkedHashMap是HashMap的子类,与HashMap有着同样的存储结构,但它加入了一个双向链表的头结点,将所有put到LinkedHashmap的节点一一串成了一个双向循环链表,因此它保留了节点插入的顺序,可以使节点的输出顺序与输入顺序相同。LinkedHashMap可以用来实现LRU算法(这会在下面的源码中进行分析)。LinkedHashMap同样是非线转载 2017-01-07 22:25:40 · 436 阅读 · 0 评论 -
Java数据结构和算法:HashMap,哈希表,哈希函数
1. HashMap概述HashMap是基于哈希表的Map接口的非同步实现(Hashtable跟HashMap很像,唯一的区别是Hashtalbe中的方法是线程安全的,也就是同步的)。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。四个关注点在HashMap上的答案 关注点 结论 HashMap是否允许空 Key和Va转载 2017-01-07 19:34:16 · 7164 阅读 · 0 评论 -
Java数据结构和算法:HashMap的实现原理
HashMap源码理解Java集合之HashMapHashMap原理及实现学习总结 HashMap源码分析HashMap原理及实现学习总结HashMap概述HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。HashMap的数据结构在java编程语言中,最基本的结构就是两种,转载 2017-01-05 08:31:57 · 3166 阅读 · 0 评论 -
Java数据结构与算法:排序算法
1. 冒泡排序冒泡排序(Bubble Sort),又被称为气泡排序或泡沫排序。它是一种较简单的排序算法。它会遍历若干次要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者比后者大,则交换它们的位置。这样,一次遍历之后,最大的元素就在数列的末尾! 采用相同的方法再次遍历时,第二大的元素就被排列在最大元素之前。重复此操作,直到整个数列都有序为止!相邻元素两两比较,大的往后放,第一原创 2017-01-03 20:39:56 · 587 阅读 · 0 评论 -
Java数据结构与算法:二叉树
原文链接:http://www.cnblogs.com/skywang12345/p/3576452.html1、二叉查找树简介二叉查找树(Binary Search Tree),又被称为二叉搜索树。它是特殊的二叉树:对于二叉树,假设x为二叉树中的任意一个结点,x节点包含关键字key,节点x的key值记为key[x]。如果y是x的左子树中的一个结点,则key[y] <= key[x];如果y是x的右原创 2017-01-03 20:30:32 · 843 阅读 · 0 评论 -
Java数据结构和算法:数组、单链表、双链表
概要线性表是一种线性结构,它是具有相同类型的n(n≥0)个数据元素组成的有限序列。本章先介绍线性表的几个基本组成部分:数组、单向链表、双向链表;随后给出双向链表的C、C++和Java三种语言的实现数组数组有上界和下界,数组的元素在上下界内是连续的。存储10,20,30,40,50的数组的示意图如下数组的特点是:数据是连续的;随机访问速度快。数组中稍微复杂一点的是多维数组和动态数组。对于C语言而言,多转载 2017-01-04 12:47:40 · 1337 阅读 · 0 评论 -
Java数据结构与算法:队列
队列的介绍队列 (Queue)是另一种限定性的线性表,它只允许在表的一端插入元素,而在另一端删除元素,所以队列具有先进先出(Fist In Fist Out, 缩写为FIFO)的特性。在队列中,允许插入的一端叫做队尾(rear),允许删除的一端则称为队头(front)。 在队列中插入一个新元素的操作简称为进队或入队,新元素进队后就成为新的队尾元素;从队列中删除一个元素的操作简称为出队或离队,当元素出转载 2017-01-04 09:30:57 · 681 阅读 · 0 评论 -
Java数据结构与算法:栈
原文出处:http://www.cnblogs.com/skywang12345/p/3562239.html注意:本文所说的栈是数据结构中的栈,而不是内存模型中栈栈的介绍栈(stack)是限定仅在表尾一端进行插入或删除操作的特殊线性表。对于栈来说, 允许进行插入或删除操作的一端称为栈顶(top),而另一端称为栈底(bottom)。不含元素栈称为空栈,向栈中插入一个新元素称为入栈或压栈, 从栈中删除转载 2017-01-04 09:17:06 · 534 阅读 · 0 评论 -
Java数据结构与算法:堆
堆的定义设有n个数据元素的关键字为(k0、k1、…、kn-1),如果它们满足以下的关系:ki<= k2i+1且ki<= k2i+2(或ki>= k2i+1且ki>= k2i+2)(i=0、1、…、(n-2)/2)则称之为堆(Heap)。如果将此数据元素序列用一维数组存储,并将此数组对应一棵完全二叉树,则堆的含义可以理解为:在完全二叉树中任何非终端结点的关键字均不大于(或不小于)其左、右孩子结点的原创 2017-01-04 18:15:39 · 2639 阅读 · 0 评论 -
Java数据结构和算法:哈夫曼树
本章介绍哈夫曼树。和以往一样,本文会先对哈夫曼树的理论知识进行简单介绍,然后给出C语言的实现。后续再分别给出C++和Java版本的实现;实现的语言虽不同,但是原理如出一辙,选择其中之一进行了解即可。若文章有错误或不足的地方,请帮忙指出!哈夫曼树的介绍在一棵二叉树中由根结点到某个结点所经过的分支序列叫做由根结点到这个结点的路径,由根结点到某个结点所经过的分支数称为由根结点到该结点的路径长度。由根结点到转载 2017-01-04 15:18:57 · 3887 阅读 · 0 评论 -
Java数据结构和算法:二叉树
二叉树的实现数组查询快,增删慢;链表增删快,查询慢;二叉树查询和增删都有很好的性能package com.itheiam62;/** * @描述 中序遍历是有序的二叉树(不重复) * */public class MyTree{ private Node root; // 根节点 private class Node { Node pa原创 2017-01-10 23:08:57 · 601 阅读 · 0 评论 -
数据结构与算法:查找
所谓查找(Search)又称检索,就是在一个数据元素集合中寻找满足某种条件的数据元素。查找在计算机数据处理中是经常使用的操作。查找算法的效率高低直接关系到应用系统的性能。查找的方法很多,本章将介绍一些常用的查找算法,主要有:线性表的查找、树表的查找和散列表的查找,并对有关的算法进行性能分析和对比基本概念1.数据表就是指数据元素的有限集合。例如,为统计职工工作业绩,建立一个包括:职工编号、职工姓名、业原创 2017-01-04 20:45:04 · 5842 阅读 · 0 评论 -
计算机常用基础算法
Algorithms playground for common questions solved in Java syntax.This repository contains my solution for some common algorithms. I’ve created this repository to learn about algorithms and improve solv转载 2017-01-04 15:42:51 · 940 阅读 · 0 评论 -
Java数据结构和算法:线性表
线性表的定义线性表(linear-list)是最常用最简单的一种数据结构。一个线性表是n (n≥0)个相同类型数据元素的有限序列。记为: L= (a1, a2 , … , an )。其中,L是表名,a1是第一个数据元素(也简称为首元素),无前驱,只有一个后继;an是最后一个数据元素(即第n个数据元素),只有一个前驱,无后继。其余的每个数据元素ai (i=2,3, … ,n-1)都只有一个前驱,且只有原创 2017-01-04 16:17:31 · 987 阅读 · 0 评论 -
Java数据结构和算法:字符串、数组和广义表
数组和广义表是与前述的线性表有所区别的数据结构。它们可以看成是线性表在下述含义上的扩展:线性表中的元素本身也是一个数据结构字符串字符串的定义、存储结构字符串(string)是由n (n≥0) 个字符组成的有限序列。字符串简称为串,一般记为: s = “a0 a1 … an-1” 其中s是串名;用双引号括起来的字符序列是串值;ai (0≤i<<n)可以是ASCII码字符中的可打印字符,通常是字原创 2017-01-04 17:48:36 · 950 阅读 · 0 评论 -
数据结构和算法:全面的算法代码库
原文链接:https://github.com/Dev-XYS/AlgorithmsAlgorithms本次README修订为算法仓库Algorithms的第100次commit,首先我们庆祝自2016年8月4日本仓库建立以来Dev-XYS在算法学习方面取得的显著进步!这里有各种算法的C++代码,任何人可以在自己的任何程序中使用,欢迎大家指出代码中的错误以及有待改进的地方。本仓库内所有代码的授权方式转载 2017-01-05 14:15:48 · 2694 阅读 · 0 评论 -
15道使用频率极高的基础算法题
1、合并排序,将两个已经排序的数组合并成一个数组,其中一个数组能容下两个数组的所有元素; 2、合并两个已经排序的单链表; 3、倒序打印一个单链表; 4、给定一个单链表的头指针和一个指定节点的指针,在O(1)时间删除该节点; 5、找到链表倒数第K个节点; 6、反转单链表; 7、通过两个栈实现一个队列; 8、二分查找; 9、快速排序; 10、获得一个int型的数中二进制中的个数;转载 2017-01-05 14:19:58 · 455 阅读 · 0 评论 -
十大编程算法助程序员走上大神路
概述:编程算法,是完成程序逻辑的主要途径。本文推荐十大编程算法,有利于程序员的编程逻辑。算法一:快速排序算法快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被转载 2017-01-05 14:25:45 · 489 阅读 · 0 评论 -
Java数据结构和算法:位运算
获取大于等于 某个整数 并且是 2 的幂数的整数public static int roundUpToPowerOfTwo(int i) { i--; // If input is a power of two, shift its high-order bit right. // "Smear" the high-order bit all the way to the right. i原创 2016-08-27 21:04:44 · 1063 阅读 · 0 评论 -
Java数据结构与算法:红黑树
概要概述:R-B Tree,又称为“红黑树”。本文参考了《算法导论》中红黑树相关知识,加之自己的理解,然后以图文的形式对红黑树进行说明。本文的主要内容包括:红黑树的特性,红黑树的时间复杂度和它的证明,红黑树的左旋、右旋、插入、删除等操作。R-B Tree简介R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以转载 2017-01-04 14:29:46 · 1173 阅读 · 0 评论 -
数据结构和算法:图
图(Graph)是一种较树更为复杂的非线性数据结构。在树形结构中,数据元素之间的关系是层次型的,树中除叶子以外的每一个数据元素可以和它下一层的多个数据元素存在关系;但除根元素以外的每一个数据元素只能且必须和它上一层中的一个数据元素存在关系。而在图形结构中,数据元素之间的关系是任意的,图中每一个数据元素可以和任何其它数据元素相关联。图的基本概念图的术语1.完全图(complete graph):在有n原创 2017-01-04 18:38:45 · 3435 阅读 · 0 评论 -
Java数据结构和算法:哈希表
哈希表是一种数据结构,它可以提供快速的插入操作和查找操作。哈希表的缺点:基于数组,数组创建后难于扩展。不能有序遍历哈希化把关键字转换成数组下标(哈希函数)冲突(碰撞)开放地址法线性探测// hash.java// demonstrates hash table with linear probing// to run this program: C:>java HashTableAppimpo原创 2017-01-13 17:14:02 · 792 阅读 · 0 评论 -
Java数据结构和算法:234树和外部存储
234树有一个数据项的节点总是有两个子节点有两个数据项的节点总是有三个子节点有三个数据项的节点总是有四个子节点多叉树,四叉树外部存储主存RAM,随机访问存储器,断电后数据会丢失磁盘文件存储器,访问速度慢一次访问一个数据块在磁盘上的数据按块存储,根据不同的系统成为块、页、分配单元、或其他的名字。这里称它们为块B-树索引原创 2017-01-13 18:30:50 · 1053 阅读 · 0 评论 -
数据结构与算法
GitBook 在线阅读,PDF、Mobi、ePub下载https://www.gitbook.com/book/alleniverson/data-structure-and-algorithms/detailsGitHub托管https://github.com/JackChan1999/DataStructure数据结构与算法学习之路数据结构与算法系列编程之法:面试和算法心得计算机常用基础算法原创 2017-01-02 17:07:43 · 2366 阅读 · 0 评论