编程珠玑(1)

原创 2006年06月16日 10:13:00

 

这周借了本 “编程珠玑”,书不大,200多页,本以为能一周看完的,结果看完第1章就头大了。在此做点笔记,说不定找工作用得上。

第1章,
位图排序,一位代表一个数(如a[10]=1 表示数10存在)
问题里面还有一个 选择问题,即n个数里随机取k个不同的数。开始看到题目的答案就蒙了,后来想想其实很简单。
设数组为a[0]...a[n-1]
1、j=n
2、i=ran(0,j)     //0..j中随机
3、取出a[i],显示
4、将a[i]和a[j-1]交换
5、j--;
6、如果已有k个,结束;否则,goto 2
首先在0..n-1中取一个,然后取走的和最后一个交换,
在0..n-2中再取,。。。。。
。。。。。。

空间和时间的矛盾似乎有很长时间了,动态规划就是典型的空间换时间的策略。

第2章,
这章我一看到问题A就头疼了,看分析竟然没看懂,直到看到答案我才理解了。二分法并不需要数组或其他结构是排好序的,只要能二分就行。
问题B中学搞过,大学想起过一次,现在又忘了。abc --> a'b'c' --> (a'b'c')' = cba  其中T'是T的逆序
顺便说一句,补充材料的程序很有幽雅(?)。

相关文章推荐

整数二进制展开后1的个数(《编程珠玑》第九章)

转自博客:http://www.cnblogs.com/graphics/archive/2010/06/21/1752421.html

编程珠玑——磁盘排序算法1

磁盘排序算法

编程珠玑之第三章习题1

问题描述: 1. 本书行将出版之时,美国的个人所得税分为5种不同的费率,其中最大的费率大约为40%。以前的情况更为复杂,税率也更高。下面所示的程序文本采用25个if语句的合理方式来计算1978年的美...

编程珠玑 Chap1

第一章中讨论的问题:给定最多1000万个无重复的7位整数,如何利用1MB(左右)的内存空间(磁盘空间充足)完成排序? 三种解决方案: 1.利用基于磁盘的归并排序。这种方法最容易想到,缺陷也很明显,归并...

《编程珠玑》阅读小记(1)— 开篇

1. 前言久闻《编程珠玑》一书的大名,一直没有找到合适的机会深入学习阅读,最近终于得以入手,便决心投入细细的研究,提升一下自己的编程思想与技术。阅读之后才发现,这本书确实一本不可多得的好书。它以计算机...
  • fly_yr
  • fly_yr
  • 2015年06月05日 15:26
  • 853

编程珠玑之第12章习题1: 随机位问题

习题描述:C库函数rand()通常返回约15个随机位。使用该函数实现函数bigrand和bigrand和randint(l, u), 要求前者至少返回30个随机位,后者返回[l,u]范围内的一个随机整...

《编程珠玑》读书笔记1----------------如何使用位逻辑来实现位向量

1.如何使用位逻辑来实现位向量 #define BITSPERWORD 32 //int型为32位 #define SHIFT 5 #define MASK 0x1F //模数 #d...

编程珠玑学习笔记1

编程珠玑学习笔记1 Posted on May 18, 2012 5 最近经历了腾讯和百度的实习生招聘,腾讯的十分顺利,拿到实习生offer,可能运气成分多一点,问我的问题我...

编程珠玑学习笔记(1):简单磁盘文件数据排序

问题描述: 输入:一个最多包含n个z

《编程珠玑2》读书笔记1---翻转代码

第二章 ”啊哈,算法“ P11 问题B:将一个n元一维向量向左旋转i个位置(循环移位),例如abcdefgh左循环移位3个位置变成defghabc  要求:使用一个n元的中间向量在n步内完成,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:编程珠玑(1)
举报原因:
原因补充:

(最多只允许输入30个字)