以图明志

计算机算法

[专题] 快速排序里的学问:枢纽元选择与算法效率

枢纽元选择也有学问
通常的、没有经过充分考虑的选择是将第一个或最后一个元素用作枢纽元。如果输入是随机的,那么这是可以接受的,但是如果输入是预排序的或者是反序的,那么这样的枢纽元就产生一个劣质的分割,因为所有的元素不是被划入S1就是被划入S2。更有甚者,这种情况发生在所有的递归调用中。

计算机数学与基础

计算机专业的学生必须掌握的五门课程

不能掌握他们就不应该获得学位
计算机专业概念有点大。就计算机科学与技术专业而言,以下这些是必修的:线性代数,概率论和离散数学:要知道,凡是能称之为“科学”的专业,就必须有一定的数学功底,否则难以称作“科学”。MIT开设的《Introduction To algorithm》,中文版叫《算法导论》。

计算机数学与基础

编程需要懂多少数学知识?

基本的编程不需要很多
数学和编程有一种容易让人误解的联系。许多人认为在开始学习编程之前必须对数学很在行或者数学分数很高。但一个人为了编程的话,需要学习多少数学呢? 实际上不需要很多。这篇文章中我会深入探讨编程中所需要的数学知识。你可能已经都知道了。

数据结构

[专题] 第16话:算法的空间复杂度

时间与空间复杂度相互影响
空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度。一个算法在计算机存储器上所占用的存储空间,包括存储算法本身所占用的存储空间,算法的输入输出数据所占用的存储空间和算法在运行过程中临时占用的存储空间这三个方面。

数据结构

[专题] 第14话:如何计算算法的时间复杂度

大O记法的实践
在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记作:T(n}=0(f(n))。它表示随问题规模n的增大,算法执行时间的埔长率和 f(n)的埔长率相同,称作算法的渐近时间复杂度,简称为时间复杂度。其中f( n)是问题规横n的某个函数。

数据结构

[专题] 第13话:算法的性能分析

如何判断一个算法的效率
我们不关心编写程序所用的程序设计语言是什么,也不关心这些程序将跑在什么样的计算机中,我们只关心它所实现的算法。这样,不计那些循环索引的递增和循环终止条件、变量声明、打印结果等操作,最终,在分析程序的运行时间时,最重要的是把程序看成是独立于程序设计语言的算法或一系列步骤。

数据结构

[专题] 第12话:什么样的算法才是好算法

算法的设计要求
很多问题来说,算法不是唯一的。同一个问题,可以有多种解决问题的算法。正因为算法不唯一,相对好的算法还是存在的。什么才叫好的算法呢?算法的正确性是指算法至少应该具有输入、输出和加工处理无歧义性、 能正确反映问题的需求、能够得到问题的正确答案。

数据结构

[专题] 第11话:算法的五个基本特征

算法的特点
算法具有五个基本特性:输入、输出、有穷性、确定性和可行性。一个算法应包含有限的操作步骤,而不能是无限的。事实上“又穷性”往往指“在合理的范围之内”。如果让计算机执行一个历时1000年才结束的算法,这虽然是有穷的,但超过了合理的限度,人们不把他是为有效算法。

数据结构

[专题] 第10话:什么是算法?

它是你必修的心念系统
算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。算法定义中,提到了指令,指令能被人或机器等计算装置执行。它可以是计算机指令,也可以是我们平时的语言文字。计算机算法是以一步接一步的方式来详细描述计算机如何将输入转化为所要求的输出的过程。

数据结构

[专题] 第九话:数据结构与算法的关系

很多算法需要借助数据结构
事实上,数据结构和算法也是类似的关系。只谈数据结构,当然是可以,我们可以在很短的时间就把几种重要的数据结构介绍完。听完后,很可能你没什么感觉,不知道这些数据结构有何用处。但如果我们再把相应的算法也拿来讲一讲,你就会发现,甚至开始感慨:哦,计算机界的前辈们,的确是一些很牛很牛的人。

计算机算法

趣味算法:老鼠试毒瓶问题

二进制的巧妙使用
大家应该都听说过这个老题目:有 1000 个一模一样的瓶子,其中有 999 瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在,你只有 10 只小白鼠和一星期的时间,如何检验出哪个瓶子里有毒药?这个问题的答案也堪称经典:把瓶子从 0 到 999 依次编号,然后全部转换为 10 位二进制数。

IT人家

怎样才能学好程序设计?

程序设计=数据结构+算法
程序设计就像盖房子,数据结构就像砖、瓦,而算法就是设计图纸。你若想盖房子首先必须有原料(数据结构),但是这些原料不能自动地盖起了你想要的房子;你必须按照设计图纸(算法)上的说明一砖一瓦地去砌。这样你才能拥有你想要的房子。

智力开发

学习的过程必须要知其所以然

以算法学习为例
目前几乎所有的算法书的讲解方式都是欧几里德式的、瀑布式的、自上而下的、每一个推导步骤都是精准制导直接面向目标的。由因到果,定义、引理、定理、证明一样不少,井井有条一丝不乱毫无赘肉。而实际上,这完全把人类大脑创造发明的步骤给反过来了。看起来是阳关大道,实际上车马不通。

计算机算法

趣味算法:生男生女的比例

阿里巴巴的一道面试题
阿里巴巴的一道面试题:说澳大利亚的父母喜欢女孩,如果生出来的第一个女孩,就不再生了,如果是男孩就继续生,直到生到第一个女孩为止,问若干年后,男女的比例是多少?刚看到问题是的思维逻辑:用递推法,假设一对夫妻,生了个女儿,就不再要了;另外一对夫妻,生了个儿子,再要一个,是女儿,然后也就不要了。第一感觉,应该是女的比男的多。

互联网时代

一些主流的个性化推荐算法评析

给用户最佳的推荐
啤酒和尿布的购买有关系吗?答案是,跟尿布一起购买最多的商品就是啤酒。据沃尔玛的分析调查,美国的太太们常叮嘱她们的丈夫下班后为小孩买尿布,而丈夫们在买尿布后又随手带回了他们喜欢的啤酒。对于隐藏在啤酒和尿布这类表面上风马牛不相及的商品背后的关联,如果不通过数据挖掘的技术,是没有办法靠拍脑袋的办法想出来的。这就是关联规则挖掘中最经典的例子。

计算机算法

趣味算法:猴子搬香蕉问题

关乎数学规划
在博客园一篇文章末尾看到一个有趣的数学问题,据说是小学4年级的题目,摘引如下:一只小猴摘了300个香蕉,需要搬回家,每次最多搬100个。小猴离家100米,它每走1米,都需要吃掉1个香蕉来补充能量,请问它最多能够搬回家多少个?
1 / 3 首页 < Prev 1 2 3 Next > 尾页 页码: