- 博客(11)
- 资源 (3)
- 收藏
- 关注
原创 编程珠玑第八章-性能之算法设计技术
一.给定一个n元的向量(正负值),如何求最大的连续子向量? 首先贴一下书中伪代码的Java实现及我的理解package chapter8;import javax.xml.crypto.AlgorithmMethod;//给定n个具有浮点数的向量,求出连续子向量值的最大和 //划归为计算arr[i]到arr[j]的和问题public class t0 { //第一个算法就是先用两个循环
2016-08-30 23:42:18 790
原创 编程珠玑第六章
1.假设现在的计算机比Appeal做实验所用的计算机快1000倍,如果使用相同的总时间(大约一天),对于O(n^2)和O(nlogn)算法,问题规模n个增加到多少? (1)使用O(nlogn)二叉树算法时,一天可以处理的问题n的规模10 000个。那么可知10000log10000/ ( x*logx)=1/1000;即4*Math.pow(10,7)*Math.log(10)=( x*logx)
2016-08-29 13:14:24 1547
原创 编程珠玑第四章
1.略 2.我们可以先用原来的二分搜索来寻找这个元素。如果他前一个与其值相等,那就使用前一个的下标;然后再考虑前一个的前一个,以此类推。**package chapter4;import java.util.Arrays;import java.util.Random;//二分搜素public class BinarySearch{ public static int binarySe
2016-08-27 21:25:48 624
原创 编程珠玑第三章习题3.7(5-8)
5.将输入的单词表示成带有后缀连字符的单词package chapter3;public class t5 { public static String matchSuffix(String word,String[] suffixs){ int matchIndex=-1;//存储最后单词word与哪一个后缀匹配,suffixs[matchIndex] b
2016-08-25 21:15:34 1477
原创 编程珠玑第三章3.7习题(1-4)
1.收税问题。 关注收税区间段的起始部分,结束部分,及此区间的税率;因为收税区间段都是每500$一个间隔且税率也随着收税区间的提高每次加上0.01;因而很容易得到下面的循环累加程序。package chapter3;public class t1 { public static float getTax(int income){ float taxRate=0.14f;
2016-08-24 22:23:59 645
原创 编程珠玑第二章2.6(5-10)
**5.题目描述:向量旋转函数将向量ab变为ba(利用(a’b’)’=ba 这里’代表求逆)。如何 将向量abc变为cba(这对交换非相邻内存块的问题进行了建模)? 解决方法,利用(a’b’c’)’=cba [注:’还是代表求逆]。如果想到这里基本上就解决了。 只需对问题B的算法进行更改即可。**#include<iostream>#define Length 9using namesp
2016-08-23 20:58:55 648
原创 编程珠玑第二章习题2.6(1-4)
1.考虑查找给定输入单词的所有变位词问题。我们只需在问题C进行更改存储方式即可 程序如下,用一个 HashMap<String, ArrayList<String>>来保存结果即可,键为标识,值为同位词构成的listimport java.util.ArrayList;import java.util.Arrays;import java.util.HashMap;class WordInfo
2016-08-16 23:45:25 680
原创 编程珠玑第二章问题A,B,C
问题A:给定一个最多包含40亿个随机排列的32位的顺序文件,找到一个不在文件的32位整数。在内存足够的情况下,如何解决该问题?如果有几个外部的临时文件可以用,但是仅有几百个字节可以用,又该如何解决问题 当内存够的情况下,C/C++可以用set集合来做,同样的Java可以用HashSet来做,具体就不说了 下面是不够的源码#include <iostream>using namespace st
2016-08-16 12:48:51 531
原创 编程珠玑第一章第六题
假设用数组array来进行存储数值及其出现的次数 因为int有32个字节,而每个数至多出现10次,又2^3-1<10<2^4-1; 又32/4=8,所有说每个int可以存8个数值及其出现的次数;一.先说set的实现方法,目的是将数值进行存储且每做一次set个数加一(1).下面第一件事就是对每个数值进行分组,由上面可知 0~7用array[0]存储及记录次数;8~15用array[1]存储及记录
2016-08-13 19:50:46 594 2
原创 编程珠玑第一章第二题
题目描述:如何使用位逻辑(如与,或,移位)来实现位向量因为这里假设的是每一个数都不同,所以int的32位的每一位可以存储一个数值, 对应位为0则表示不存在该数,为1则表示存在。 假设用int数组array来记录数是否存在及其存在的个数 因为int的32位刚好每一位都可以存一个数及其个数(个数这里只能为0或1); 所以 一方面我们对数值number/32进行分组,即array[number
2016-08-11 22:18:56 615
原创 编程珠玑第一章第一题的解法,常用的排序
编程珠玑第一章习题 第一题 如果不缺内存,如何使用一个库的语言实现一种排序算法以表示和排序集合 解法一 使用c++的sort#include <algorithm> #include <iostream> using namespace std; template <class T> int getArrLength( T& arr){//获取普通数组的长度
2016-08-11 20:58:20 537
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人