算法学习-典型数组处理

什么是数组?

数组能够顺序存储相同类型的多个数据。访问数组中某个元素的方法是通过数组索引下标访问。数组索引下标是指,每一个数组中的元素对应一个编号。通过编号能够快捷地对数组中的元素进行访问。

Java中使用数组

创建一个数组需要三个步骤

1.声明数组:定义数组的名字和存储的数据类型

2.创建数组:创建过程完成之后才可以使用数组,创建数组的时候我们需要指定数组的长度即元素的个数

3.初始化数组元素

//  声明数组
int[] demo;
//  创建数组,
demo = new int[3];
//  初始化数组元素
for(int i = 0;i < 3;i++) {
   demo[i] = i;
}

//  简化写法 
int[] a = new int[3];

//  声明初始化写法
int[] a = {1,2,3};

典型数组处理代码

现在有一些任务需要处理。我们已经知道了,数组存储了一些的相同类型的元素。如果我们需要找出其中最大的元素?如何计算数组元素的平均值?如何复制数组?若是要颠倒数组中的元素,又该怎么做......

找出数组中最大的元素

    public int maxAt(int[] a) {
        int maxAt = a[0];
        for (int i = 1;i < a.length;i++) {
            if(maxAt < a[i]) {
                maxAt = a[i];
            }
        }
        return maxAt;
    }

计算数组元素的平均值

    public double average(int[] a) {
        int n = a.length;
        double sum = 0.0;
        for (int value : a) {
            sum += value;
        }
        return sum/n;
    }

复制数组

    public int[] cp(int[] a){
        int n = a.length;
        int[] rp = new int[n];
        //System.arraycopy(a,0,rp,0, n);
        for (int i = 0; i < a.length; i++) {
            rp[i] = a[i];
        }
        return rp;
    }

颠倒数组元素的顺序

    public void reverse(int[] a) {
        int n = a.length;
        for (int i = 0; i < n / 2; i++) {
            int temp = a[i];
            a[i] = a[n-1-i];
            a[n-1-i] = temp;
        }
    }

矩阵相乘

在Java中可以使用二维数组代替矩阵,两个矩阵相乘可以得到一个新的矩阵。运算规则是第一个矩阵上的每一行元素与第二个矩阵的每一列元素做乘法运算并相加得到新的矩阵

    public void mu(int[][] a) {
        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=0 j=0 为例
                //  第一个矩阵的第0个数组的每一个元素分别与
                //  第二个矩阵的每一个数组的第一个元素相乘得到新矩阵 c[0][0] 位置的值
                for (int k = 0; k < n; k++) {
                    c[i][j] += a[i][k]*a[k][j];
                }
            }
        }
    }

后记

夯实好基础,运用好简单技能去解决复杂问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值