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