百度百科里面是这么解释算法的:算法可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤。或者看成按照要求设计好的有限的确切的计算序列,并且这样的步骤和序列可以解决一类问题。算法我们也学过不少了,《数据结构》里面讲到的字符串匹配算法,排序算法等等。但近日遇到的这个S算法,让我很是惊叹,一种说不出的精妙。
近日遇到的一个问题,从N个数里面随机抽取M个不同的数,并且这M个数是有序的。于是想是《编程珠玑》里面的取样问题章节提到的S算法,顺利地解决了问题,重新看了一下这个算法,觉得甚是奇妙。
书上的问题是这样的:程序的输入包含两个整数m和n,其中m <n。输出是0~n-1范围内的m个随机整数的有序列表,不允许重复。从概率的角度讲,我们希望得到没有重复的有序选择,其中每个选择出现的概率相等。
为了

本文介绍了在编程中遇到的问题,即从N个数中随机抽取M个不同且有序的数。通过引入《编程珠玑》中提到的S算法,成功解决了这一问题。算法S具有良好的性能,即使在最坏情况下,时间复杂度为O(n),并且确保了每个数被选中的概率均等。虽然作者在数学理论上尚未完全理解其精妙之处,但通过Python和C语言的实现,展示了算法的高效性。
最低0.47元/天 解锁文章
3947

被折叠的 条评论
为什么被折叠?



