集册 Java实例教程 稀疏数组的快速标量乘法。

稀疏数组的快速标量乘法。

欢马劈雪     最近更新时间:2020-01-02 10:19:05

411
提示:您可在线编辑运行本教程的实例 - 运行实例,去试试!
稀疏数组的快速标量乘法。
//N o w  J a v a  .   c o m 提 供


//package com.nowjava;


public class Main {

    public static void main(String[] argv) throws Exception {

        double a = 2.45678;

        double[] v = new double[] { 34.45, 35.45, 36.67, 37.78, 37.0000,

                37.1234, 67.2344, 68.34534, 69.87700 };

        System.out.println(java.util.Arrays.toString(scalarMultiplyFast(a,

                v)));

    }


    /**

     * Fast scalar multiplication for sparse arrays.

     */

    public static double[] scalarMultiplyFast(double a, double[] v) {

        if (a == 0.0)

            return (new double[v.length]);

        double[] ans = new double[v.length];

        for (int k = 0; k < v.length; k++) {

            if ((a != 0.0) && (v[k] != 0)) {

                ans[k] = v[k] * a;

            } else
            /* from 
            N o w J a v a . c o m - 时  代  Java*/

                ans[k] = 0.0;

        }

        return (ans);

    }


    /**

     * Fast scalar multiplication for sparse arrays.

     */

    public static double[] scalarMultiplyFast(double a, int[] v) {

        if (a == 0.0)

            return (new double[v.length]);

        double[] ans = new double[v.length];

        for (int k = 0; k < v.length; k++) {

            if ((a != 0) && (v[k] != 0)) {

                ans[k] = v[k] * a;

            } else

                ans[k] = 0.0;

        }

        return (ans);

    }


    /**

     * Returns a comma delimited string representing the value of the array.

     */

    public static String toString(double[] array) {


        StringBuffer buf = new StringBuffer(array.length);

        int i;

        for (i = 0; i < array.length - 1; i++) {

            buf.append(array[i]);

            buf.append(',');

        }

        buf.append(array[i]);

        return buf.toString();

    }


    /**

     * Returns a comma delimited string representing the value of the array.

     */

    public static String toString(double[][] array) {

        StringBuffer buf = new StringBuffer();

        for (int k = 0; k < array.length; k++) {

            buf.append(toString(array[k]));

            buf.append(System.getProperty("line.separator"));

        }

        return buf.toString();

    }


    /**

     * Returns a comma delimited string representing the value of the array.

     */

    public static String toString(int[] array) {

        StringBuffer buf = new StringBuffer(array.length);

        int i;

        for (i = 0; i < array.length - 1; i++) {

            buf.append(array[i]);

            buf.app
展开阅读全文