计算机算法设计的关键是什么?

2020-04-26 教育 107阅读
刚看到有人答鸵鸟算法,的确是个很重要的算法。
然后就想到了下面这个sorting算法,虽然不怎么重要,但是挺有意思的。
我觉得这有可能是我这辈子最喜欢的算法了:
Sleep Sort
英语差不多的同学可以看一下Quora上的简介
https://www.quora.com/What-is-sleep-sort
这套算法是4chan上的某个精神病提出的
以下是代码:
#include
#include
#include
#include
#include
int main(int c, char **v)
{
while (--c > 1 && !fork());
sleep(c = atoi(v[c]));
printf("%d\n", c);
wait(0);
return 0;
}
用GCC编译,运行的时候把你想要sort的东西当成command line arguments送给可执行文件就行了
代码来源:https://rosettacode.org/wiki/Sorting_algorithms/Sleep_sort
=====以下原答案=====
计算机科学里最重要的算法就是你觉得最重要的算法以外的所有算法。←这是玩笑话
算法是一整个体系,从divide and conquer,dynamic programming,greedy这样的基本分类到randomized, linear programming这种奇怪的东西都是算法体系里重要的一环。算法里还有一个大类就是data structure,这些东西环环相关。
初学算法的同学就是要不断的接触,了解,分析这些乱七八糟的东西,最终达到看到不同的结构,不同的需求能够选择正确的工具。我的第一个算法老师曾经这样说过:there isn't a best algorithm for everything, choose the best tool for your problem
就拿你说的hash来看,你觉得key value pair到处都有用到,就觉得这个算法最重要,O(1)的best case看起来也很诱人。可是能用的地方到底有多少?database天天用range query你告诉我你库只有hash index?不能吧,所以B tree是不是很重要?算法和优化是计算机科学里的一个大项,多少代人的研究成果让你一个hash最重要给概括了,这样是不是有种钦定的感觉?
算法导论多看看,没事的时候上leetcode做做题,多见识见识不同的算法是如何应用的,每次选择一个算法/数据结构就问问自己为什么这样?是hash,是hash先,明明都是hash先来的……key value也好,O(1)也好,还是universal那家伙也好...怎么就做不了sssp呢?以后遇上奇怪的程序也不至于懵逼到:我一个linear programming,怎么就跑maximum cardinality bipartite matching来了呢
至于到底什么算法最重要,能用到的都是最重要的,谢谢
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com