java数据结构(一)五月21号开始

java基础数据结构

  • 基础编程模型(算法第四版)

基础编程模型(算法第四版)

使用大多数编程语言共有的特性。而不是java独有的特性。
矩阵乘法(方阵)

int N=a.length;
double[][] c=new double[N][N];
for(int i=0;i<N;i++0){
	for(j=0;j<N;j++){
		for(int k=0;k<N;k++){
		c[i][j]+=a[i][k]*b[k][j];
		}
	}
}
//差点忘了怎么算

起别名
数组名代表一个数组,如果将一个数组变量赋予另外一个变量,那么两个变量会指向同一个数组。

int[] a=new int[N];

a[i]=1234;
int[] b=a;
b[i]=5678;
//这里的a[i]值也会变为5678,有点像python里面的引用。

java会将数值型数组初始化为0,将布尔型数组初始化为false。
静态方法:就是别的语言里面的函数,但是在Java里面全都是类,所以这里的函数称为数组,只在调用的时候执行,修饰符static将其和其他的类方法分开。

//计算一个整数的绝对值
public static int abs(int a){
	if(a>0)return a;
	else return -a;

}
//计算浮点数的绝对值。
public static double abs(double x){
	if(x<0.0){
	return -x;}
	else{
	return x;}
}
//判断一个数字是否是素数
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;
	}
//计算平方根
public static double sqrt(double c){
	if(c<0) return Double.NaN;
	double err=1e-15;
	double t=c;
	while(Math.abs(t-ct)>err*t)
		t=(c/t+t)/2.0;
	return t;

调用静态方法。例如:递归:
递归有三点注意:
1、递归总有一个最简单的情况,方法的第一条语句是一个包含return的条件语句
2、递归调用总是去解决一个规模更小的子问题,这样递归才能收敛到最简单情况
3、递归调用的父问题和尝试解决的子问题之间不应该有交集,在下面代码中,两个子问题各自操作的数组部分是不同的。

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){
	//如果key值存在于a[]里面,他的索引就不会小于lo且不会大于hi
	if(lo>hi)return -1;
	int mid=lo+(hi-lo)/2;
	if(key<a[mid])return rank(key,a,lo,mid-1);
	else if(key>a[mid])return rank(key,a,mid+1,hi);
	else return mid;
	}//二分查找

基础编程模型,单元测试
每个静态方法库里面都包含了一个main()函数测试库里面的所有方法,有的语言不支持多个main()的方法,每个模块的main()方法至少调用模块中的其他代码并且在某种程度上保证正确性。

你可能感兴趣的:(java,java)