七月流星

不求做的最好,但求做的更好

八张图表示八大排序算法

算法一:插入排序插入排序示意图插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。算法二:希尔排序希尔排序示意图希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。希尔排序是基...

2018-03-02 15:30:30

阅读数 653

评论数 0

八大排序算法 之 堆排序

例如数组 a={19,3,60,7,1,15,33,24,45,32,79,85};排序思想:1,堆排序也是选择排序的一种,根据堆得特性,每次把最大或最小值(本次以最大值为例)拿出来,按序排列;2,堆排序是对普通选择排序的一种优化:如果是一个稳定堆,每次在选择最大值时,只用沿着二叉树其中一个分叉去...

2018-03-02 14:46:45

阅读数 50

评论数 0

Hacking Enums and Modifying "final static" Fields

众所周知,enum类型实例数量是固定的,甚至还被用来设计单例。但有时候仍然存在需要动态增加Enum实例的场景,这也并非一定是设计失败,也可能是增加灵活性的实际需求,比如一些web框架,再比如HanLP  中的动态用户自定义词性。然而最大的障碍是switch语句生成的虚构类,本文参考Java Sp...

2017-12-22 14:56:25

阅读数 118

评论数 0

一致性哈希算法学习及JAVA代码实现分析

1,对于待存储的海量数据,如何将它们分配到各个机器中去?---数据分片与路由 当数据量很大时,通过改善单机硬件资源的纵向扩充方式来存储数据变得越来越不适用,而通过增加机器数目来获得水平横向扩展的方式则越来越流行。因此,就有个问题,如何将这些海量的数据分配到各个机器中?数据分布到各个机器存储之...

2017-09-23 11:44:37

阅读数 136

评论数 0

KMP算法

KMP为的是解决2字符串匹配问题的算法,检查一个字符串是否为另一个的子串,sub = "abc" , str = "aabcd" ,str里包含了一个sub,KMP算法可以以O(M+N)的复杂度找到子串在str的位置。 那代码怎么实现呢: [h...

2017-05-19 13:58:05

阅读数 137

评论数 0

算法之红黑树

红黑树(一) 原理和算法详细介   1 R-B Tree简介     R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。 红黑树的特性: (1)每个节点或者是...

2017-05-19 13:56:40

阅读数 225

评论数 0

数据结构之链表

一、概念 (1)数组的线性序是由数组的下标决定的,链表中的顺序是由各对象中的指针所决定的 (2)链表结点结构 node *prev; node *next; int key; (3)链表结点 node *head; node *nil;//哨兵 (4)对链表的操作 LIST-SEARCH(L, ...

2017-05-19 13:54:37

阅读数 240

评论数 0

算法之冒泡排序

冒泡排序算法需要遍历几次数组。每次遍历都要比较连续相邻的元素,如果某一对相邻元素是降序,则互换它们的值,否则,保持不变。由于较小的值像“气泡”一样逐渐浮想顶部,而较大的值沉向底部,所以叫冒泡排序。 冒泡排序的图解是: 总结一句话就是:连续比较相邻的元素,降序则呼唤。有n个数,共需要比较n...

2017-05-19 13:53:29

阅读数 155

评论数 0

算法之插入排序

插入排序算法介绍 排序算法是最简单的算法,也是最基本的算法。顾名思义,插入排序就是把当前待排序的元素插入到一个已经排好序的列表里面。 一个非常形象的例子就是右手抓取一张扑克牌,并把它插入左手拿着的排好序的扑克里面。插入排序的最坏运行时间是O(n2), 所以并不是最优的排序算法。特点是简单,不需...

2017-05-19 13:52:23

阅读数 139

评论数 0

数据结构是哈希表(hashTable)

哈希表也称为散列表,是根据关键字值(key value)而直接进行访问的数据结构。也就是说,它通过把关键字值映射到一个位置来访问记录,以加快查找的速度。这个映射函数称为哈希函数(也称为散列函数),映射过程称为哈希化,存放记录的数组叫做散列表。比如我们可以用下面的方法将关键字映射成数组的下标:arr...

2017-05-19 13:51:35

阅读数 210

评论数 0

数据结构之栈和队列

我们知道,在数组中,若知道数据项的下标,便可立即访问该数据项,或者通过顺序搜索数据项,访问到数组中的各个数据项。但是栈和队列不同,它们的访问是受限制的,即在特定时刻只有一个数据项可以被读取或者被删除。众所周知,栈是先进后出,只能访问栈顶的数据,队列是先进先出,只能访问头部数据。这里不再赘述。  ...

2017-05-19 13:50:24

阅读数 148

评论数 0

Map排序

Map排序的方式有很多种,这里记录下自己总结的两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value)。 按键排序(sort by key) jdk内置的Java.util包下的TreeMap既可满足此类需求,原理很简单,其重载的构造器之一 ...

2017-05-19 13:49:23

阅读数 169

评论数 0

数据结构之哈希函数

概念: 哈希(hash),也叫做散列、数据摘要等,是一种常见的数据结构。哈希的表的核心概念分为哈希表和哈希函数。 哈希表(hashTable) 哈希表之前讲过,有需要的可以参考:点击打开哈希表 哈希函数 哈希函数就是将某一不定长的对象映射为另一个定长的对象。能够做到这一点的函数有很多,那...

2017-05-19 13:48:35

阅读数 378

评论数 0

数据结构之队列

概述 在java5中新增加了Java.util.Queue接口,用以支持队列的常见操作。Queue接口与List、Set同一级别,都是继承了Collection接口。 Queue使用时要尽量避免Collection的add()和remove()方法,而是要使用offer()来加入元素,使用pol...

2017-05-19 13:46:38

阅读数 162

评论数 0

数据结构之线性表

基本概念 线性表(List):由零个或多个数据元素组成的有限序列。 特征: 1.线性表是一个序列。 2.0个元素构成的线性表是空表。 3.线性表中的第一个元素无前驱,最后一个元素无后继,其他元素有且只有一个前驱和后继。 4.线性表是有长度的,其长度就是元素个数,且线性表的元素个数是有限的,也就...

2017-05-19 13:45:16

阅读数 186

评论数 0

数据结构之二叉树

树 定义:满足以下条件的就是树:  1. 有且仅有一个特定的称为根Root的结点。  2. 当n>1时,其余结点可分为m(m>0)个互不相交的有限集,其中每个集合本身又是一个棵树,并称为根的子树。 树是数据结构中一种常见的数据结构,比如我们排序中常见的二叉树,红黑树等。最常见的是树...

2017-05-19 13:42:22

阅读数 186

评论数 0

红黑树深入剖析及Java实现

概述 红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由Rudolf Bayer发明的,当时被称为平衡二叉B树(symmetric binary B-trees)。红黑树和AVL树类似,都是在进行插入...

2017-05-19 13:41:15

阅读数 226

评论数 0

数据结构之数组

一.数组的基本概念 数组可以看成是多个相同类型数据组合,对这些数据的统一管理。数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组的元素可以是任何数据类型,包括基本类型和引用类型。C和C++中的数组都可以分配在栈上面,而JAVA中的数组是只能分配在堆上面的,...

2017-05-19 13:22:09

阅读数 681

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭