#算法的乐趣

《数据结构与算法分析-第1章-引论》

1.1本书讨论的内容示例1:设有一组数,要确定其中第k个最大值示例2:解决字谜问题。1.2数学知识复习1.2.1指数1.2.2对数1.2.3级数1.2.4模运算1.3递归简论示例1:斐波那契数列示例2:打印输出数四条基本原则:1.基准情形2.不断推进3.设计法则4.合成效益法则练习1.编程解决选择问题,令k=N/2,并...

Java虚拟机内存基础、垃圾收集算法及JVM优化

 1.1类加载子系统与方法区  类加载子系统负责从文件系统或者网络中加载Class信息,加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中可能还会存放运行时常量池信息,包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)。1.2Java堆  java堆在虚拟机启...

最全排序算法原理解析、java代码实现以及总结归纳

  十种常见排序算法可以分为两大类:非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。   详情如...

CMS为什么采用“标记-清除”算法

  分代式GC里,年老代常用mark-sweep;或者是mark-sweep/mark-compact的混合方式,一般情况下用mark-sweep,统计估算碎片量达到一定程度时用mark-compact。这是因为传统上大家认为年老代的对象可能会长时间存活且存活率高,或者是比较大,这样拷贝起来不划算,还不如采用就地收集的...

5.HotSpot的算法实现

  在可达性分析中,可以作为GCRoots的节点有很多,但是现在很多应用仅仅方法区就有上百MB,如果逐个检查的话,效率就会变得不可接受。  而且,可达性分析必须在一个一致性的快照中进行-即整个分析期间,系统就像冻结了一样。否则如果一边分析,系统一边动态表化,得到的结果就没有准确性。这就导致了系统GC时必须停顿所有的Ja...
代码星球 ·2021-01-24

4.垃圾收集算法

  对所有存活对象进行一次全局遍历来确定哪些对象可以回收,遍历的过程从根出发,找到所有可达对象,除此之外,其它不可达的对象就是垃圾对象,可被回收。整个过程分为两个阶段:标记阶段找到所有存活对象;清除阶段清除所有垃圾对象。         优...
代码星球 ·2021-01-24

二分查找算法(递归与非递归两种方式)

首先说说二分查找法。二分查找法是对一组有序的数字中进行查找,传递相应的数据,进行比较查找到与原数据相同的数据,查找到了返回1,失败返回对应的数组下标。采用非递归方式完成二分查找法。java代码如下所示。[java] viewplain copy print?  &nbs...

常用推荐系统算法总结

一,常用推荐系统算法总结1、Itemcf(基于商品的协同过滤)这个算法是cf中的一种,也是当今很多大型网站都在采用的核心算法之一。对于商城网站(以Amazon为代表,当然也包括京东那种具有搞笑特色的推荐系统在内),影视类推荐,图书类推荐,音乐类推荐系统来说,item的增长速度远不如user的增长速度,而且item之间的...

基于用户的协同过滤推荐算法原理和实现

在推荐系统众多方法中,基于用户的协同过滤推荐算法是最早诞生的,原理也较为简单。该算法1992年提出并用于邮件过滤系统,两年后1994年被GroupLens用于新闻过滤。一直到2000年,该算法都是推荐系统领域最著名的算法。本文简单介绍基于用户的协同过滤算法思想以及原理,最后基于该算法实现园友的推荐,即根据你关注的人,为...

探索推荐引擎内部的秘密,第 3 部分: 深入推荐引擎相关算法

 深入介绍聚类算法之前,这里先对Mahout中对各种聚类问题的数据模型进行简要的介绍。数据模型Mahout的聚类算法将对象表示成一种简单的数据模型:向量(Vector)。在向量数据描述的基础上,我们可以轻松的计算两个对象的相似性,关于向量和向量的相似度计算,本系列的上一篇介绍协同过滤算法的文章中已经进行了详细...

探索推荐引擎内部的秘密,第 2 部分: 深入推荐引擎相关算法

ApacheMahout是ApacheSoftwareFoundation(ASF)旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序,并且,在Mahout的最近版本中还加入了对ApacheHadoop的支持,使这些算法可以更高效的运行在云计算环境中。关于Ap...

排序算法小结

排序算法经过了很长时间的演变,产生了很多种不同的方法。对于初学者来说,对它们进行整理便于理解记忆显得很重要。每种算法都有它特定的使用场合,很难通用。因此,我们很有必要对所有常见的排序算法进行归纳。    我不喜欢死记硬背,我更偏向于弄清来龙去脉,理解性地记忆。比如下面这张图,我们...
代码星球 ·2021-01-24

8-4.桶排序算法详解

1.桶排序介绍桶排序(Bucketsort)是一种基于计数的排序算法,工作的原理是将数据分到有限数量的桶子里,然后每个桶再分别排序(有可能再使用别的排序算法或是以递回方式继续使用桶排序进行排序)。当要被排序的数据内的数值是均匀分配的时候,桶排序时间复杂度为Θ(n)。桶排序不同于快速排序,并不是比较排序,不受到时间复杂度...
代码星球 ·2021-01-24

4-2.矩阵乘法的Strassen算法详解

题目描述   请编程实现矩阵乘法,并考虑当矩阵规模较大时的优化方法。思路分析   根据wikipedia上的介绍:两个矩阵的乘法仅当第一个矩阵B的列数和另一个矩阵A的行数相等时才能定义。如A是m×n矩阵和B是n×p矩阵,它们的乘积AB是一个m×p矩阵,它的一个...

排序算法一:快速排序

快速排序的第一种实现(单指针移动,挖空填数)快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。总的说来...
代码星球 ·2021-01-24
首页上一页...2728293031...下一页尾页