***编程珠玑***
hhjian6666
路漫漫其修远兮,吾将上下而求索。修远兮,求索兮。
展开
-
编程珠玑——第一章习题解答
1、如果不缺内存,如何使用一个具有库的语言来实现以后总排序算法和排序集合?答:C++有实现排序的库函数:sort。该函数的实现是快速排序。另外C++的容器Map和set均可以实现排序。由于Map和set的实现是红黑树,所以具有自动排序功能。快速排序算法实现: void QuickSort(int *array,int left,int right){ ...转载 2018-07-29 14:17:15 · 582 阅读 · 0 评论 -
40亿个随机排列整数问题
问题: 给定最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数(在文件中至少缺失一个这样的数——为什么?)。在具有足够内存的情况下,如何解决该问题?如果有几个外部的“临时”文件可用,达十年后仅有几百字节的内存,又该如何解决?解答:(1)如果具有足够的内存,可用采用位图法进行解决。需要2^32/8/1024/1024=512MB的内存。如果某个数在在文件中,那么将...转载 2018-07-30 08:25:52 · 403 阅读 · 0 评论 -
n元一维向量旋转问题
问题描述:将一个n元一维向量向左旋转i个位置。例如,当n=8且i=3时,向量abcdefgh旋转为defghabc. 简单的代码使用一个n元的中间向量在n步内完成该工作。你能否仅使用数十个额外字节的存储空间,在正比于n的时间内完成该向量的旋转?问题解析:1、以正比于n的时间(相当于n步内)完成该操作,那么就是每个元素的移动都差不多一步到位,如将第4位的d一步移动到第1位处,其他元素也也一样。2...转载 2018-07-30 08:26:32 · 482 阅读 · 0 评论 -
变位词问题
问题描述: 给定一个英语词典,找出其中的所有变位词集合。例如,“pots”、“stop”和“tops”互为变位词,因为每一个单词都可以通过改变其他单词中的字母的顺序来得到。 问题解析: 变位词具有相同的长度,相同的字符,唯一的区别就是这些相同的字符按照不同的顺序排列成不同的字符串而已。如果有一种方法唯一标识这些相同的字符,那么这个问题好解决了。 解决方案: 方案1: 对于这个问题,最快想到的最直接...转载 2018-07-30 08:26:58 · 3957 阅读 · 0 评论