算法-基礎(一)數組基本操做 和 靜態方法(後面編寫算法的時候會用到)

因爲後面編寫算法涉及一些基礎語法,我這邊先複習複習有錯誤望指導。算法

數組操做數組

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表明列,建立的時候要在類型以後制定行數列數,它的圖形結構以下(本身畫的你們將就着看):spa

clipboard.png

靜態方法:code

/**
 * 靜態方法小樣類
 * @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:28blog

相關文章
相關標籤/搜索