一、数组
1、颠倒数组元素的顺序
int N = a.length;
for(int i = 0 ; i < N/2;i++)
{
double temp = a[i];
a[i] = a[N-1-i];
a[N-i-1] = temp;
}
2.矩阵相乘(方阵)
a[][] * b[][] = c[][]
int N = a.length;
double [][] c = new double[N][N];
for(int i = 0;i<N;i++)
for(int j = 0;j<N;j++)
{//计算行i和列j的点乘
for(int k = 0;k<N;k++)
c[i][j] +=a[i][k]*b[k][j];
}
3.复制数组
注:数组名表示的是整个数组——如果我们将一个数组变量赋予另一个变量,那么两个变量将会指向同一个数组。例如:
输出结果为:
这种情况叫做“起别名”,如果要复制数组的话,那么应该声明、创建并初始化一个新的数组,然后将原数组中的元素值挨个赋值到新数组。如下面的代码所示。
int N = a.length;
doble [] b = new double[N];
for(int i = 0;i<N;i++)
b[i] = a[i];
二、静态方法
1.判定一个数是否是素数
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 ture;
}
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;
}
3.计算调和级数
public static double H(int N)
{
double sum = 0.0;
for(int i = 1; i<=N;i++)
sum += 1.0/i;
return sum;
}
4.二分查找的递归实现
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;
}