写在前面
看着最近勇哥也开始入驻CSDN了,而且是日更,原本我打算下周的考试周结束了在开始CSDN的更新,看着看着,手就有点痒痒了,就想写点啥。嗯嗯嗯,只不过最近有点忙…我也不知道忙啥,感觉就是忙,瞎忙的那种,也不知道写点什么。就提前一周进入算法的学习吧,Java那边我还是会定期更新,一直到JDBC访问数据库那就会转向数据库,JS,JQ的学习,后面的JSP,SSM都会去了解一下。
大家都知道,算法和数据结构是编程的灵魂,所以,只要我还活着,对算法和数据结构的探索都不会停下,现在的我,从最简单的算法开始学起,我的参考书是,人民邮电出版社的《算法(第四版)》。
今日所学
由于这本书前一章是对Java的复习,我将一些我试着敲的代码拿出来吧。
package 第一章.基础编程模型.素数;
public class test {
public static void main(String[] args) {
System.out.println(isPrime(N));
}
public static boolean isPrime(int N)
{
if (N<2) return false;
for (int i = 2;i*i <= N;i++)
if (N%i==0) return false;
return true;
}
}
package 第一章.基础编程模型.平方根;
public class test {
public static void main(String[] args) {
System.out.println(sqrt(4));//结果为2
}
public static double sqrt(double c)
{
if (c<0) return Double.NaN;
double err = 1e-15;
double t = c;
while (Math.abs(t - c/t) > err * t)
t = (c/t + t) / 2.0;
return t;
}
}
package 第一章.基础编程模型.调和级数;
public class tset {
public static void main(String[] args) {
System.out.println(H(9));//结果2.8289682539682537
}
public static double H(int N)
{
double sum = 0.0;
for (int i = 1; i <= N; i++) {
sum += 1.0/i;
}
return sum;
}
}
package 第一章.基础编程模型.二分查找的递归实现;
public class test {
public static void main(String[] args) {
int[] a = new int[]{1,3,5,7,9};
System.out.println(rank(3,a));//结果是1
}
public static int rank(int key,int[] a)
{
return rank( key,a,0,a.length-1);
}
public static int rank(int key,int[] a,int lo,int hi){
if (lo>hi) return -1;
int mid = lo + (hi - lo) / 2;//取到中间的那个值
if (key<a[mid]) return rank(key ,a,lo,mid-1);//当key小于中间值时
else if (key > a[mid]) return rank(key,a,mid+1,hi);//当key大于中间值时
else return mid;
}
}