倪升武的博客

这世上天才很少,懒蛋却很多,你若对得起时间,时间便对得起你!

排序:
默认
按更新时间
按访问量

【数据结构和算法05】 红-黑树(看完包懂~)

【2018.6.2更新】我新搭建的博客系统上线了(使用SpringBoot搭建的),后面会在新系统中发表博客,这里也会给出链接,欢迎各位朋友收藏交流哈~  博客地址:http://www.itcodai.com         (友情提示,红-黑树是基于二叉搜索树的,如果对二叉搜索树不了解,可以...

2016-04-13 15:50:25

阅读数:46429

评论数:89

【java虚拟机】java虚拟机的类加载机制

这篇博文主要来总结一下java虚拟机加载一个类的过程,为了避免枯燥的解说,为了让读者在读完本文后能彻底理解类加载的过程,首先来看一段java代码,我们从一个例子入手: //ClassLoaderProcess.java文件 class Singleton { private static...

2016-07-01 08:24:50

阅读数:6781

评论数:20

使用轻量级工具emoji-java处理emoji表情字符

原文地址:http://www.itcodai.com/blog/26 在之前做博客,测试编辑博客和评论功能时,发现如果输入了emoji表情的话,无法插入数据库,会报错类型不匹配的错误。后来在网上找了很多解决办法,最后发现github上有个很牛逼的轻量级开源工具叫emoji-java。 ...

2018-08-23 01:54:06

阅读数:478

评论数:0

算法应该怎么“玩”

市面上关于算法的书可谓琳琅满目,有经典但难啃的、也有简单入门的、更有独辟蹊径的,不过这些大多数都是偏理论的多、偏应用的少,很多读者啃完后,对各种排序、搜索、遍历等常用算法了如指掌,但是遇到实际问题时还是束手无策,这其实就是经验和方法集的问题了。本课程将带着大家“玩”算法,其实就是希望大家能做到以下...

2018-08-16 13:06:57

阅读数:3143

评论数:0

值得程序员和设计师关注的微信公众号

这篇文章分享了十多个技术和设计类微信公众号。其中有最受欢迎的热门公众号、也有专注某个技术或设计的公众号,涵盖 Java、Python、Android、iOS、Web前端、PHP、C/C++、.NET、Linux、数据库、UI设计和Web网页设计等。 程序员私房菜 「程序员私房菜」是很受欢迎的技...

2016-04-27 00:14:43

阅读数:2432

评论数:0

java集合框架03——ArrayList和源码分析

    上一章学习了Collection的架构,并阅读了部分源码,这一章开始,我们将对Collection的具体实现进行详细学习。首先学习List。而ArrayList又是List中最为常用的,因此本章先学习ArrayList。先对ArrayList有个整体的认识,然后学习它的源码,深入剖析Arr...

2016-04-11 15:05:57

阅读数:4559

评论数:4

java集合框架02——Collection架构与源码分析

Collection是一个接口,它主要的两个分支是List和Set。如下图所示:         List和Set都是接口,它们继承与Collection。List是有序的队列,可以用重复的元素;而Set是数学概念中的集合,不能有重复的元素。List和Set都有它们各自的实现类。 为了方便...

2016-04-13 08:21:49

阅读数:8744

评论数:6

【数据结构与算法01】数组

    数组是应用最广泛的数据存储结构。它被植入到大部分的编程语言中,由于数组十分易懂,所以在这里就不赘述,主要附上两端代码,一个是普通的数组,另一个是有序数组。有序数组是按关键字升序(或降序)排列的,这种排列使快速查找数据项成为可能,即可以使用二分查找。     普通数组的java代码: ...

2016-04-11 22:04:10

阅读数:5119

评论数:11

【数据结构与算法02】栈与队列

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

2016-04-11 22:49:30

阅读数:4003

评论数:5

【数据结构和算法03】链表

          在第一章的数组中,我们看到数组作为数据存储结构有一定的缺陷。在无序数组中,搜索时低效的;而在有序数组中,插入效率又很低;不管在哪一种数组中删除效率都很低。况且一个数组创建后,它的大小是无法改变的。         在本章中,我们将讨论下链表这个数据结构,它可以解决上面的一些...

2016-04-12 20:29:44

阅读数:3460

评论数:3

【数据结构与算法04】二叉树

       在有序数组中,可以快速找到特定的值,但是想在有序数组中插入一个新的数据项,就必须首先找出新数据项插入的位置,然后将比新数据项大的数据项向后移动一位,来给新的数据项腾出空间,删除同理,这样移动很费时。显而易见,如果要做很多的插入和删除操作和删除操作,就不该选用有序数组。       ...

2016-04-13 00:20:27

阅读数:15596

评论数:26

【数据结构和算法06】2-3-4树

    从第4节的分析中可以看出,二叉搜索树是个很好的数据结构,可以快速地找到一个给定关键字的数据项,并且可以快速地插入和删除数据项。但是二叉搜索树有个很麻烦的问题,如果树中插入的是随机数据,则执行效果很好,但如果插入的是有序或者逆序的数据,那么二叉搜索树的执行速度就变得很慢。因为当插入数值有序时...

2016-04-13 08:57:19

阅读数:6529

评论数:5

【数据结构与算法07】哈希表

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

2016-04-12 23:59:05

阅读数:6796

评论数:9

【数据结构与算法08】 堆

        优先级队列可以用有序数组来实现,这种做法的问题是,尽管删除最大数据项的时间复杂度为O(1),但是插入还是需要较长的O(N)时间,这是因为必须移动数组中平均一半的数据项以插入新数据项,并在完成插入后,数组依然有序。         这里介绍实现优先级队列的另一种结构:堆。堆是一种树...

2016-04-09 16:41:05

阅读数:3556

评论数:2

【数据结构与算法09】图

        在计算机程序设计中,图是最常用的结构之一。图是一种与树有些相像的数据结构,实际上,从数学意义上说,树是图的一种。然而在计算机程序设计中,图的应用方式与树不同。         前面讨论的数据结构都有一个框架,这个框架都是由相应的算法设定的。比如说,二叉树是那样一个形状,就是因为那...

2016-04-10 16:03:54

阅读数:3037

评论数:11

【数据结构和算法10】 带权图

    上一节我们已经看到了图的边可以有方向,这一节里,我们将探讨边的另一个特性:权值。例如,如果带权图的顶点代表城市,边的权可能代表城市之间的距离,或者城市之间的路费,或者之间的车流量等等。     带权图归根究底还是图,上一节那些图的基本操作,例如广度优先搜索和深度优先搜索等都是一样的,在这...

2016-04-13 15:41:51

阅读数:7062

评论数:5

【数据结构和算法11】基础排序

        前10节我们学习了一些经典的数据结构,从这节开始,我们将学习一些排序算法。这一节我们先学习几个基础排序算法:冒泡排序,选择排序和插入排序。1. 冒泡排序         冒泡排序算法运行起来非常慢,但在概念上它是排序算法中最简单的,因此冒泡排序算法在刚开始研究排序技术时是一个非常...

2016-04-14 22:02:43

阅读数:3805

评论数:1

【数据结构和算法12】希尔排序

        上一章我们学习了冒泡排序、选择排序和插入排序三种基础排序算法,这三种排序算法比较简单,时间复杂度均为O(N2),效率不高。这节我们讨论一个高级排序算法:希尔排序。希尔排序是基于插入排序的,插入排序有个弊端,假设一个很小的数据项在很靠近右端的位置上,那么所有的中间数据项都必须向右移动...

2016-04-16 16:31:43

阅读数:3850

评论数:2

【数据结构和算法13】快速排序

        上一节我们学习了一个高级排序算法:希尔排序,这一节我们将讨论另一个高级排序算法:快速排序。           快速排序算法是最流行的排序算法,因为有充足的理由,在大多数情况下,快速排序都是最快的,执行时间为O(NlogN)级(这只是对内部排序或者说随机存储器内的排序而言,对于...

2016-04-16 21:00:12

阅读数:3180

评论数:1

【数据结构和算法14】归并排序

        归并算法的中心是归并两个已经有序的数组。归并两个有序数组A和B,就生成了第三个数组C,数组C包含数组A和B的所有数据项,并且使它们有序的排列在数组C中。首先我们来看看归并的过程,然后看它是如何在排序中使用的。         假设有两个有序数组,不要求有相同的大小。设数组A有4个...

2016-04-19 19:17:42

阅读数:3939

评论数:3

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