编程珠玑
文章平均质量分 77
天地一扁舟
这个作者很懒,什么都没留下…
展开
-
编程珠玑: 15.1实现一个哈希表统计字符串出现次数 -------解题总结
#include #include #include #include using namespace std;/*问题:统计书中的单词及出现次数,实现一个数据结构进行存储分析:典型的信息检索中的倒排索引问题。可以采用链表数组实现: 哈希 + 拉链法 一种做法是:根据给定的单词个数n,选取最接近n的质数k,然后对字符串进行散列, h = 31 * h + char原创 2017-01-21 19:11:36 · 1421 阅读 · 0 评论 -
编程珠玑:第11章 排序 11.1 插入排序
#include #include #include using namespace std;/*问题:插入排序。分析 :插入排序的本质是:对于当前元素,从当前元素前面已经排好序的序列寻找出一个元素大于当前元素。然后将这两个元素交换最容易混淆的两个排序:选择排序,前面序列A[1..i-1]有序,当前第i个元素是后面序列A[i....n]中挑选的最小的元素组成,然后与A[i]元素交原创 2017-01-25 12:38:06 · 331 阅读 · 0 评论 -
编程珠玑: 12章 取样问题 12.3设计空间,程序的输入包含两个整数m和n,其中m<n。输出是0~n-1范围内m个随机整数的有序列表,不允许重复。 解法2-------解题总结
#include #include #include #include using namespace std;/*问题:程序的输入包含两个整数m和n,其中m<n。输出是0~n-1范围内m个随机整数的有序列表,不允许重复。从概率的角度说,我们希望得到没有重复的有序选择,其中 每个选择出现的概率相等。分析:可以先把包含0~n-1的数组前面m个数打乱,然后对前面m个数进行排序即原创 2017-01-25 10:34:25 · 565 阅读 · 0 评论 -
编程珠玑: 12章 取样问题 12.3设计空间,程序的输入包含两个整数m和n,其中m<n。输出是0~n-1范围内m个随机整数的有序列表,不允许重复。 -------解题总结
#include #include #include #include #include using namespace std;/*问题:程序的输入包含两个整数m和n,其中m<n。输出是0~n-1范围内m个随机整数的有序列表,不允许重复。从概率的角度说,我们希望得到没有重复的有序选择,其中 每个选择出现的概率相等。分析:方法1:从剩余r个数中选择s个数的概率为s/r,该原创 2017-01-25 10:19:40 · 538 阅读 · 0 评论 -
编程珠玑: 12章 取样问题 12.1程序的输入包含两个整数m和n,其中m<n。输出是0~n-1范围内m个随机整数的有序列表,不允许重复。 优化解法-------解题总结
#include #include #include #include using namespace std;/*问题:程序的输入包含两个整数m和n,其中m<n。输出是0~n-1范围内m个随机整数的有序列表,不允许重复。从概率的角度说,我们希望得到没有重复的有序选择,其中 每个选择出现的概率相等。分析:从剩余r个数中选择s个数的概率为s/r。 举例:假设m=2原创 2017-01-25 09:55:00 · 897 阅读 · 1 评论 -
编程珠玑: 12章 取样问题 12.1程序的输入包含两个整数m和n,其中m<n。输出是0~n-1范围内m个随机整数的有序列表,不允许重复-------解题总结
#include #include #include #include using namespace std;/*问题:程序的输入包含两个整数m和n,其中m<n。输出是0~n-1范围内m个随机整数的有序列表,不允许重复。从概率的角度说,我们希望得到没有重复的有序选择,其中 每个选择出现的概率相等。分析:这个感觉是蓄水池抽样问题。先设置0~m-1为前m个随机整数,然后对于i原创 2017-01-25 09:22:43 · 552 阅读 · 0 评论 -
编程珠玑: 13章 搜索 13.4使用整数结构,生成[0 ,maxval]范围内m各随机整数的有序序列 -------解题总结
#include #include using namespace std;/*问题:使用箱子和链表,生成[0 ,maxval]范围内m各随机整数的有序序列分析:采用比如4个相似,将元素划分到每个箱子中,每个箱子内部用链表表示。 等同于是对链表的优化输入: 100(元素最大值) 10(输出的元素个数) 输出; 输出10个0~100且有序的元素 关键:1 采用比如4原创 2017-01-24 09:47:33 · 347 阅读 · 0 评论 -
编程珠玑: 13章 搜索 13.2使用链表结构,生成[0 ,maxval]范围内m各随机整数的有序序列 -------解题总结
#include #include using namespace std;/*问题:使用链表,生成[0 ,maxval]范围内m各随机整数的有序序列分析:这是典型的插入排序。每次将一个带插入的元素插入到前面已经排好序的结果中。 1】先查找到待插入位置,2】修改结点指针指向输入: 100(元素最大值) 10(输出的元素个数) 输出; 输出10个0~100且有序的元原创 2017-01-24 06:50:34 · 358 阅读 · 0 评论 -
编程珠玑: 13章 搜索 13.2使用线性结构,生成[0 ,maxval]范围内m各随机整数的有序序列 -------解题总结
#include #include using namespace std;/*问题:使用数组,生成[0 ,maxval]范围内m各随机整数的有序序列分析:这是典型的插入排序。每次将一个带插入的元素插入到前面已经排好序的结果中。 1】先查找到待插入位置,2】强待插入位置及其后面元素同一向后移动,然后在待插入位置上插入元素输入: 100(元素最大值) 10(输出的元素个原创 2017-01-23 14:27:22 · 394 阅读 · 0 评论 -
编程珠玑: 13章 搜索 13.1生成[0 ,maxval]范围内m各随机整数的有序序列 -------解题总结
#include #include #include using namespace std;/*问题:生成[0 ,maxval]范围内m各随机整数的有序序列分析:用一个set来确保不重复,用一个随机函数来确保得到指定范围内的随机数输入:100(元素最大值) 10(输出的元素个数)输出;输出10个0~100且有序的元素关键:1实现一个集合set,包含插入,有序输出到数原创 2017-01-22 18:37:15 · 398 阅读 · 0 评论 -
编程珠玑: 14章 堆 14.1实现一个堆,对数组排序 -------解题总结
#include #include #include using namespace std;/*问题:实现一个堆排序分析:堆,用数组表示的话:设数组x[1..n],则有根节点为x[1],孩子结点下标为2*i,2*i+1,父节点下标为i/2,大顶堆:任何结点的值>=其父节点的值采用小顶堆排序的步骤:1 步骤1:设置第一个元素为根节点,后续插入的结点放在已有结点后面,采用向上调原创 2017-01-22 17:15:54 · 363 阅读 · 0 评论 -
编程珠玑: 14章 堆 14.2实现一个优先级队列,返回数组中最小值 -------解题总结
#include #include #include using namespace std;/*问题:实现一个优先级队列,支持插入元素和返回最小元素操作分析:优先级队列保证插入和返回最小值元素的时间复杂度都是O(logN),假设有n个元素,每个元素插入在堆中的时间复杂度为O(logN) 所以堆排序的总时间复杂度为O(NlogN)优先级队列:说白了就是小顶堆的变体。原创 2017-01-22 18:00:25 · 689 阅读 · 0 评论 -
编程珠玑: 15章 字符串 15.2寻找字符串中的最长重复子串 -------解题总结
#include #include #include #include //qsortusing namespace std;/*问题:给定一个文本文件作为输入,查找其中最长的重复子字符串。例如,“Ask not what your country can do for you, but what you can do for your country”中 最长的重复字符串是"ca原创 2017-01-21 21:09:32 · 1867 阅读 · 0 评论 -
编程珠玑:第10章 节省空间 10.1 稀疏矩阵表示 ---- 解题总结
#include #include #include #include using namespace std;/*问题:在地理数据库中存储邻居的系统。共有两千个邻居,编号范围是0~1999,每个邻居在地图张用一个点来描述。 系统允许用户通过触摸输入板的方式访问其中任意一点。程序将选定的物理位置转换为0~199范围内的一对整数 x和y,然后使用(x,y)对支出用户选中了“2000原创 2017-01-26 00:58:23 · 675 阅读 · 0 评论