算法在实际编程应用中是如何?

killerpro
算法在实际编程应用中是如何?

其实我自己也知道这个标题问得有点不清不楚......:em03:
= =b

我再尽量说清楚一点吧~:em16:

我的意思大概是......
在编程当中,对一些具体的算法应用多部多?

看到有些人在算法导论(其实自己也有看),在玩ACM,其实,一些比较难的算法在实际应用中多不多的?
譬如说,在写一个软件的过程中,会频繁用到一些算法的吗?还是keep it sample, stupid?:mrgreen:

因为我是一个在校学生,没有什么项目经验,想问一下大家对算法在程序中重要程度的看法,所为一个在校学生(快大三了orz),应不应该钻研算法,玩ACM(大公司好像都很看重)?:em14:

还有个问题就是,在看一些算法书的时候,例如算法导论,虽然了解了知识,但在实际该算法应该在什么情况下使用,我觉得很迷惘,这是不是要通过多编程,多的项目经验慢慢积累的?又或者,大家有没有什么将相关算法与实验应该相结合的书推荐给我吗?:shock:

问得很乱,只希望有经验的各位能够各抒己见,也让我了解一下大家的看法~:-D

net_robber
算法这个词可能不太好理解,

也许应该给你另外一名字:方法,计算方法

5毛党党员
算法对于效率提高还是很有用的
还有一些求最优解决方法的时候,算法学的好就比较强了

cugb_cat
对于想在IT行业有所发展的人来说,算法学多少都不为过,算法好就表示你有很好的抽象思维和逻辑思维能力。

aaaab
算法这个概念太宽了. 可以说用在建模阶段的对整个工程的架构中的某些方法也叫算法, 再具体的某个程序段里,进行一次排序方法也叫算法.

hqx8211
看你能不能去大公司了。小公司做的垃圾应用系统,并发不过三五个,数据量不过几百条,用得着快速排序么?起泡法一样行。用得着hash表查询么?遍历就可以了。所以很多“程序员”宣称最没用的就是数据结构,算法。反正1微秒和1毫秒的查询时间用户感觉不到区别。

但是数据规模大了,1秒和一分半钟的区别就相当明显了。楼主努力,算法确实很有用。甚至一定程度上决定你的薪水是四位数还是五位数。

scutan
进大公司要么对算法很熟悉,要么对底层很熟悉。
多做点ACM题吧。反正我知道的认真搞过ACM的现在混得都相当不错

qingfengjianke
算法是一个程序的灵魂.

killerpro
[quote]原帖由 [i]hqx8211[/i] 于 2008-6-6 17:08 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8547209&ptid=1152936][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
看你能不能去大公司了。小公司做的垃圾应用系统,并发不过三五个,数据量不过几百条,用得着快速排序么?起泡法一样行。用得着hash表查询么?遍历就可以了。所以很多“程序员”宣称最没用的就是数据结构,算法。 ... [/quote]

有点恍然大悟的感觉~
无意中看到你是广东的,正好我也是在广东读U~

同时也感谢其他各位的回答~

算法=方法 计算方法 抽象思维和逻辑思维能力
这个可能真的要我有一定的积累才能体会到~

还是要多练吖~

ychang0918
将处理一条记录的时间从10^-3, 降为10^-6.
将资源消耗从4n 变成n

tyz
算法
好好学吧

chenzhanyiczy
最简单,移动1亿条数据要不要算法呢?:mrgreen:

foxpro7
在中大型的应用中,处理的数据量巨大,性能优化是非常关键的。

但可能用到的算法就那几个,也有可能是几个算法的混合。

把算法掌握好了,才有可能在实际应用中深入应用。

你可以考虑一个问题,二分法和平衡二叉树各有什么长处和短处。

james_lover
算法总是:书到用时放恨少啊。。

cjaizss
硬件中也一样重要.
我们的一个数字设计,
本来是用串型任务,处理带宽小包45M
后来优化为"伪流水线",处理带宽小包60M
最后优化为流水线,处理带宽小包70M
处理带宽越高,就意味着到峰值的时候越不会丢包,你说重要不重要?

zszyj
[quote]原帖由 [i]chenzhanyiczy[/i] 于 2008-6-13 22:31 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8587115&ptid=1152936][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
最简单,移动1亿条数据要不要算法呢?:mrgreen: [/quote]
其实可以告诉你, 和书本上的算法的关系真的不大.倒是和数据库访问算法的关系更大.
现在任何一个CPU,浮点运算速度都超过10亿次. C的算法差异再大, 也就是10^-9st vs 10^-8s的关系, 因此程序易懂,稳定, 易维护才是关键.
而数据库单行记录访问的速度在ms级,因此对于大规模的数据量,真正的瓶颈是在数据库的访问上,SQL优化,数据分布的优化,索引的优化,才是大型应用系统的关键.

foxpro7
[quote]原帖由 [i]zszyj[/i] 于 2008-6-14 10:30 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8588130&ptid=1152936][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]

其实可以告诉你, 和书本上的算法的关系真的不大.倒是和数据库访问算法的关系更大.
现在任何一个CPU,浮点运算速度都超过10亿次. C的算法差异再大, 也就是10^-9st vs 10^-8s的关系, 因此程序易懂,稳定, 易维护才是关键.
而数据库单行记录访问的速度在ms级,因此对于大规模的数据量,真正的瓶颈是在数据库的访问上,SQL优化,数据分布的优化,索引的优化,才是大型应用系统的关键.[/quote]


大部分认同,但部分不认同。

C语言的实现,在某些特定环境下,仍然需要算法做创新,可能多个算法混合才能解决问题。

说道数据库,很多时候就不是算法的问题,而是如何充分理解数据库的性能逻辑,充分使用其特点,算法确实没有大用处。


比如说如何从1亿条记录的表中删除5000万?

cugb_cat
[quote]原帖由 [i]zszyj[/i] 于 2008-6-14 10:30 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8588130&ptid=1152936][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]

其实可以告诉你, 和书本上的算法的关系真的不大.倒是和数据库访问算法的关系更大.
现在任何一个CPU,浮点运算速度都超过10亿次. C的算法差异再大, 也就是10^-9st vs 10^-8s的关系, 因此程序易 ... [/quote]
多数情况下,对于普通程序员来说,算法没什么用

chenzhanyiczy
你们知道移动,联通的出帐吗?虽然用到了stl,但其实还是用到了算法,只是stl帮你集合了算法等等,假如换成c来实现,你就需要算法来优化了

LinuxKen
记得以前一个搞数据挖掘的师兄,处理一个海量数据,刚开始程序运行了几个钟头才完成,换了一个算法之后程序运行7秒搞定了,酷吧?