时间复杂度 O(log n) 是什么意思?

预先知道算法的复杂度是一回事,了解其后的原理是另一件事情。 不管你是计算机科班出身还是想有效解决最优化问题,如果想要用自己的知识解决实际问题,你都必须理解时间复杂度。 先从简单直观的 O(1) 和 O(n) 复杂度说起。O(1) 表示一次操作即可直接取得目标元素(比如字典或哈希表),O(n) ...

2018-09-21 10:08:03

阅读数:31

评论数:0

分页原理

  getUserTagList(  int pageNum, int pageSize );  开始索引:           List<T>   list=   userDao.findUserList();           使用subList(...

2018-04-26 17:50:35

阅读数:16

评论数:0

树的高度和深度的区别

对于树的基本概念上理解,对于才接触数据结构的人来说,树的高度和深度是一个容易混淆的知识点,现解释如下:1.高度对于高度的理解,我们不管他数据结构什么什么知识,就拿楼房来说,假如一个人提问:楼房的高度有好高?我们会下意识的从底层开始往上数,假如楼有6层,则我们会说,这个楼有6层楼那么高,则提问者就会...

2018-02-09 09:45:43

阅读数:121

评论数:0

AVL树的旋转图解和简单实现

AVL树是带有平衡条件的查找二叉树。这个平衡条件要容易保持,而且他要保证树的深度为O(logN)原文地址:http://blog.csdn.net/qq_25806863/article/details/74755131平衡条件一个最理想的平衡条件是左右两个子树的高度完全相等,但只有节点数量为2^...

2018-02-09 09:23:09

阅读数:48

评论数:0

如何理解红黑树

方式1: 漫画展示: https://zhuanlan.zhihu.com/p/31805309方式2:     动态演示:       https://www.cs.usfca.edu/~galles/visualization/RedBlack.html博客: http://www.cnblo...

2018-02-08 19:15:53

阅读数:36

评论数:0

二叉树的左旋和右旋

树的旋转,分为左旋和右旋,以下借助图来做形象的解释和介绍:1.左旋(右子为轴,当前结点左旋)如上图所示:当在某个结点pivot上,做左旋操作时,我们假设它的右孩子y不是NIL[T],pivot可以为树内任意右孩子而不是NIL[T]的结点。左旋以pivot到y之间的链为“支轴”进行,它使y成为该孩子...

2018-02-08 11:06:45

阅读数:53

评论数:0

教你初步了解红黑树

                 教你初步了解红黑树 作者:July、saturnman   2010年12月29日本文参考:Google、算法导论、STL源码剖析、计算机程序设计艺术。推荐阅读:Left-Leaning Red-Black Trees, Dagstuhl Workshop on ...

2018-02-08 10:17:19

阅读数:20

评论数:0

异或

2018-02-07 15:51:20

阅读数:28

评论数:0

Hash函数(2)

via:什么是哈希表和哈希算法? 比如这里有一万首歌,给你一首新的歌X,要求你确认这首歌是否在那一万首歌之内。 无疑,将一万首歌一个一个比对非常慢。但如果存在一种方式,能将一万首歌的每首数据浓缩到一个数字(称为哈希码)中,于是得到一万个数字,那么用同样的算法计算新的歌X的编码,看看歌X...

2018-02-07 15:24:36

阅读数:13

评论数:0

Hash函数

原作者: 举个栗子你就清楚了。考虑到你已经读过源码,下面一些术语就不详细解释了。 我们创建一个hashmap,其entry数组为默认大小16。 现在有一个key、value的pair需要存储到hashmap里,该key的hashcode是0ABC0...

2018-02-07 13:59:36

阅读数:53

评论数:0

java.text.NumberFormat

NumberFormat 是所有数值格式的抽象基类。此类提供格式化和解析数值的接口。NumberFormat 还提供了一些方法来确定哪些语言环境具有数值格式,以及它们的名称是什么。 NumberFormat 可用于格式化和解析任何语言环境的数值。使代码能够完全独立于小数点、千位分隔符甚至所用...

2018-01-23 10:09:39

阅读数:16

评论数:0

四舍六入五成双

四舍六入五成双的规则: 1. 被修约的数字小于5时,该数字舍去; 2. 被修约的数字大于5时,则进位; 3. 被修约的数字等于5时,要看5前面的数字,若是奇数则进位,若是偶数则将5舍掉,即修约后末尾数字都成为偶数;若5的后面还有不为“0”的任何数,则此时无论5的前面是奇数还是偶数...

2018-01-22 20:36:57

阅读数:373

评论数:0

读 Java TimSort算法 源码

本来准备看Java容器源码的。但是看到一开始发现Arrays这个类我不是很熟,就顺便把Arrays这个类给看了。Arrays类没有什么架构与难点,但Arrays涉及到的两个排序算法似乎很有意思。那顺便把TimSort算法和双指针快速排序也研究一下吧。 首先强调一下,这是个稳定的排序算法 看过代码之...

2018-01-19 20:05:59

阅读数:57

评论数:0

QUICKSORTING - 3-WAY AND DUAL PIVOT

algorithms It's no news that Quicksort is considered one of the most important algorithms of the century and that it is the defacto system sort fo...

2018-01-19 20:05:10

阅读数:64

评论数:0

DualPivotQuickSort 双轴快速排序 源码

DualPivotQuicksort source code 这个算法是Arrays.java中给基本类型的数据排序使用的具体实现。它针对每种基本类型都做了实现,实现的方式有稍微的差异,但是思路都是相同的,所以这里只挑了int类型的排序来看。 整个实现中的思路是 首先检查数组的长度,比一个阈值小的...

2018-01-19 20:03:30

阅读数:116

评论数:0

真正统治世界的十大算法

本文由 伯乐在线 - JustinWu 翻译。未经许可,禁止转载!英文出处:Marcos Otero。欢迎加入翻译组。不久前的某一天,我在浏览Reddit发现了一篇有趣的文章《统治世界的十大算法》,作者George Dvorsky在那篇文章中试图解释算法之于当今世界的重要性,以及哪些算法对人类文明...

2018-01-19 16:10:49

阅读数:51

评论数:0

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