《algorithm_4th》 1 chapter:Fundamentals

Posted narisu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《algorithm_4th》 1 chapter:Fundamentals相关的知识,希望对你有一定的参考价值。

算法,第四版,英文版百度网盘
密码:5i3u

Basic Programming Model

Java中数组的使用

Java中数组的使用:声名(declaration),指定空间大小(creation)和初始化(initialization)缺一不可。一旦我们创建了(create)了数组,它的大小(N)就固定了。

一维数组:
完整的形式(long form):

double[] a; //declaration
a = new double[N]; //creation
for(int i = 0; i < N;)
{ //initialization
    a[i++] = 0.0;
}

简写(short form):

double[] a = new double[N];
int[] a = {1, 1, 2, 3, 5, 8}; //上边循环是把数组a初始化为统一值,此处初始化为特定值。

二维数组:
完整的形式(long form):

double[][] a; //declaration
a = new double[M][N]; //creation
for(int i = 0; i < M; i++)
{ //initialization
    for(int j = 0; j < N; j++)
    {
        a[i][j] = 0.0;
    }
}

简写(short form):

double[][] a = new double[M][N];
int[][] a = {{1, 1}, {2, 3}, {5, 8}}; //上边循环是把数组a初始化为统一值,此处初始化为特定值。M = 3; N = 2,即两行三列的二维数组。

Java中length、length()以及size()

length是属性,一般集合类对象拥有的属性,取得集合的大小。例如:数组.length就是取得数组的长度。

length()是方法,一般字符串类对象有该方法,也是取得字符串长度。例如:字符串.length();

java中的length属性和length()方法和size()方法的区别

1 java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性。

2 java中的length()方法是针对字符串String说的,如果想看这个字符串的长度则用到length()这个方法。

3.java中的size()方法是针对泛型集合说的,如果想看这个泛型有多少个元素,就调用此方法来查看!

reverse the elements within an array

int N = a.length;
for(int i = 0; i < N/2; ++i)
{
    double temp = a[i];
    a[i] = a[N - 1 - i];
    a[N - 1 - i] = temp;
}

matrix-matrix multiplication(square matrices)

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)
    {
        //Compute dot product of row i and column j.
        for(int k = 0; k < N; ++k)
        {
            c[i][j] += a[i][k] * b[k][j];
        }
    }
}

primality test

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;
}

square root(Newton‘s method)

public static double sqrt(double c) // 求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;
}

关于牛顿法求根参考网址:

如何通俗易懂地讲解牛顿迭代法求开方?

求牛顿开方法的算法及其原理,此算法能开任意次方吗?

如何用牛顿法求一个数的平方根

以上是关于《algorithm_4th》 1 chapter:Fundamentals的主要内容,如果未能解决你的问题,请参考以下文章

排序算法可视化

Algorithms(4th.Edition)pdf

nowcoder basic algorithm chapter 3

Python Algorithms – chapter3 计数初步

planning algorithms chapter 1

nowcoder basic algorithm chapter 2