算法-基础(一)数组基本操作 和 静态方法(后面编写算法的时候会用到)

郝思文
• 阅读 2696

由于后面编写算法涉及一些基础语法,我这边先复习复习有错误望指导。

数组操作


public class ArrayDemo {
    /**
     * 数组操作小样类
     * @addPerson : 黄昭滨 2018-3-12
     * @param args
     */
    public static void main(String[] args){

    }

    /**
     * 找出数组中最大数 并返回
     */
    public double arrayIsMax(){
        //定义一个数组
        double[] unkonwn = new double[10];

        //先把第一个假设为最大值
        double isMax = unkonwn[0];
        for(int i=1;i<unkonwn.length;i++){
            if(unkonwn[i]>isMax){
                //如果当前这个索引的值大于假设最大值 就直接赋值过去
                isMax = unkonwn[i];
            }
        }
        return isMax;
    }

    /**
     * 计算元素的平均值
     */
    public double arrayIsAverage() {
        //定义一个数组
        double[] unkonwn = new double[10];
        //获取数组长度
        int N = unkonwn.length;
        //定义数组累加值字段
        double sum = 0.0;

        for (int i = 0; i < N; i++) {
            sum += unkonwn[i];
        }
        return sum/N;
    }



    /**
     * 复制数组
     */
    public double[] arrayIsCopy() {
        //定义一个数组
        double[] unkonwn = new double[10];
        //获取数组长度
        int N = unkonwn.length;
        //创建一个被复制的数组一样的壳
        double[] copyArray = new double[N];

        for (int i = 0; i < N; i++) {
            copyArray[i] = unkonwn[i];
        }
        return copyArray;
    }

    /**
     * 颠倒数组元素顺序
     */
    public double[] arrayIsFlip() {
        //定义一个数组
        double[] unkonwn = new double[10];
        //获取数组长度
        int N = unkonwn.length;

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

    /**
     * 矩阵相乘
     */
    public double[] arrayIsMatrix() {
        //定义一个数组
        double[] unkonwn = new double[10];
        //获取数组长度
        int N = unkonwn.length;

        //创建类似矩阵的双数组结构
        double[][] x = 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++){
                    x[i][j] +=x[i][k]*x[k][j];
                }
            }
        }
        return unkonwn;
    }


}

这边最后一个用了二维数组,二维数组就是一堆数组,二维数组可以长度不一致是参差不齐的,但是二维数组有默认规定i i代表行 j代表列,创建的时候要在类型之后制定行数列数,它的图形结构如下(自己画的大家将就着看):

算法-基础(一)数组基本操作 和 静态方法(后面编写算法的时候会用到)

静态方法:

/**
 * 静态方法小样类
 * @addPerson : hzb 2018-3-122
 */
public class StaticDemo {
    public static  void main(String[] args){

    }
    /**
     * 计算一个绝对值
     */
    public static int abs(int x){
        if(x < 0){
            return -x;
        }else {
            return x;
        }
    }
    /**
     * 计算一个浮点数的绝对值
     */
    public static double abs1(double x){
        if(x < 0.0){
            return -x;
        }else {
            return x;
        }
    }

    /**
     * 计算一个是否素数
     */
    public static boolean abs2(int x){
        if(x < 2){
            return false;
        }
        for(int i =2;i*i<=x;i++){
            if(x % i==0){
                return false;
            }

        }
        return true;
    }

    /**
     * 计算平方根
     * 注意这个地方用的是迭代的方法你们可以搜索一下牛顿迭代法
     */
    public static double abs3(double x){
        if(x < 0){
            return Double.NaN;
        }
        double err = 1e-15;
        double t = x;
        while(Math.abs(t-x/t)>err*t){
            t= (x/t+t)/2.0;

        }
        return t;
    }

  

}

有写错指出望指出 wavesape@126.com
addPerson :hzb 2018-3-12 22:29:28

点赞
收藏
评论区
推荐文章
徐小夕 徐小夕
4年前
这些经典的前端基础算法题, 你会做几道?
之前因为工作原因接触了很多有意思的算法知识,为了巩固大家的算法基础和编程能力,笔者总结了8道算法题,供大家学习参考.接下来我们来看看题目.1.有一个数组arra1,a2,a3,b1,b2,b3,c1,c2,c3...,通过算法将数组进行拆分,转化为如下格式的数组a1,b1,c1,a2,b2,c2,a3,
徐小夕 徐小夕
4年前
这些经典的前端基础算法题, 你会做几道?
之前因为工作原因接触了很多有意思的算法知识,为了巩固大家的算法基础和编程能力,笔者总结了8道算法题,供大家学习参考.接下来我们来看看题目.1.有一个数组arra1,a2,a3,b1,b2,b3,c1,c2,c3...,通过算法将数组进行拆分,转化为如下格式的数组a1,b1,c1,a2,b2,c2,a3,
小万哥 小万哥
2年前
C++ STL容器和算法:详解和实例演示
CSTL(标准模板库)提供了一组丰富的容器和算法,使得开发者能够更加高效地编写程序。本文将介绍STL中的一些常用容器和算法。容器vectorvector是一个动态数组,可以在运行时调整大小。它的优点在于可以快速地访问元素,缺点是在插入和删除元素时需要移
红橙Darren 红橙Darren
4年前
Android模板设计模式之 - 构建整个应用的BaseActivity
1\.模式介绍模式的定义定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。所有分享大纲:视频讲解地址:模式的使用场景1.多个子类有公有的方法,并且逻辑基本相同时。2.重要、复杂的算法,可以把核心算法设计为模板方法,周边的相关细节功能则由各个子类实现。3.重构时,模板方法模式
Wesley13 Wesley13
4年前
Java面试总结(排序算法)
1.冒泡排序算法描述:两两比较,大的放后面2.选择排序算法描述:在m元数组中找到最小值的位置,然后将最小值的位置和第n(n0,1,2,....m1)位的值对调,排序k次则m元数组中前k(k<m)位的值已经排序好,m元数组中前k位的值不需要再进行排序,此时需要排序的元素只有mk个3.插入排序算
Wesley13 Wesley13
4年前
Java数据结构和算法(四)——栈
前面我们讲解了数组,数组更多的是用来进行数据的存储,纯粹用来存储数据的数据结构,我们期望的是插入、删除和查找性能都比较好。对于无序数组,插入快,但是删除和查找都很慢,为了解决这些问题,后面我们会讲解比如二叉树、哈希表的数据结构。  而本篇博客讲解的数据结构和算法更多是用作程序员的工具,它们作为构思算法的辅助工具,而不是完全的数据存储工具。这些数据结构的生
Wesley13 Wesley13
4年前
23种设计模式(6):模版方法模式
定义:定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。类型:行为类模式类图:!(http://static.oschina.net/uploads/img/201603/22162800_BFc1.jpg)       事实上,模版方法是编程中一个
菜园前端 菜园前端
2年前
什么是快速排序?
原文链接:什么是快速排序(quickSort)?主要分成两部分实现,分区、递归操作。分区从数组中任意选择一个"基准",所有比基准小的元素放在基准前面,比基准大的元素放在基本后面。递归递归地对基准前后的子数组进行分区。算法步骤1.首先获取数组的第一个值(作为
分布式系统的主键生成方案对比 | 京东云技术团队
UUID​UUID(通用唯一识别码)是由32个十六进制数组成的无序字符串,通过一定的算法计算出来。为了保证其唯一性,UUID规范定义了包括网卡MAC地址、时间戳、名字空间(Namespace)、随机或伪随机数、时序等元素,以及从这些元素生成UUID的算法。
郝思文
郝思文
Lv1
小楼一夜听春雨,深巷明朝卖杏花。
文章
3
粉丝
0
获赞
0