摘要:
第一章比较好的问题总结如下:1.如何生成位于0到n-1之间的k个不同的随机顺序的随机整数?这在前一篇文章中已经给出了解答2.若代码需要1.25MB的空间,而系统只能提供1MB的空间,该如何处理?思路:此时可分别两次读入数据来处理。3.每个整数不只出现一次,而是最多出现10次,如何处理?思路:前面的问题每个数字只出现一次,所以选择用一个bit位来表示这个数字是否出现; 而现在最多出现10次,就不能用一位来表示了,至少需要4bit来表示这个数字出现了 多少次。所以位图的长度也就扩大了四倍。此时若对内存大小有严格限制,则可以 多次读入数据来解决问题4.免费电话区号不只是800,还包... 阅读全文
摘要:
最近打算研究一下《编程珠玑》这本神器,第一章主要讲了利用位图这种结构来方便地解决一些问题。在看用位图排序的算法时,有几个小问题总结一下:1.如何生成位于0到n-1之间的k个不同的随机顺序的随机整数要求生成的k个随机数不重复,且每个随机数是小于n的。这个问题当n,k值比较小时,比较容易解决,但当n值比较大时,比如10000000,不得不考虑算法的效率。现给出两种解法(Python实现):'''Created on 2012-7-31@author: wanglei'''import randomdef rand1(n,k): numlist=[i 阅读全文