【数据结构与算法】数组应用4:多项式计算Java版

简介:

    这里讨论的是多项的加法,直接看下面的程序代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package  chapter02;
 
import  java.util.Arrays;
 
/*
  * 多项式加法(简单版)
  * A(x) = 2x^5 + 3x^4 + 0x^3 + 5x^2 + 4x^1 +1x^0
  * B(x) =        3x^4 + 2x^3 + 1x^2 + 1x^1 + 2x^0
 
  * A(x) + B(x) = 
  * C(x) = 2x^5 + 6x^5 + 2x^3 + 6x^2 + 5x^1 + 3x^0
 
  * 采用一维数组保存,第一个元素保存多项式的最高次幂,后面依次保存每项的次数
  * A(x) = [5, 2, 3, 0, 5, 4, 1]
  * B(x) = [3,    2, 1, 1, 2, 2]
  * A(x) + B(x) =
  * C(x) = [5, 2, 5, 1, 6, 6, 3]
 
  */
public  class  CH02_08 {
     public  static  void  main(String[] args) {
         //定义两个多项式的数组
         int [] arr1 = { 5 2 3 0 5 4 1 };
         int [] arr2 = { 3 ,     2 1 1 2 2 };
         
         //输出两个多项式数组
         System.out.println(Arrays.toString(arr1));
         System.out.println(Arrays.toString(arr2));
         
         //定义结果多项式的数组
         int  arrResultLen = arr1.length > arr2.length ? arr1.length:arr2.length;    //数组长度为拥有较多项的多项式的数组的长度
         int [] arrResult =  new  int [arrResultLen];
         
         //初始化arrResult
         Arrays.fill(arrResult,  0 );
         
         //输出arrResult
         System.out.println();
         System.out.println(Arrays.toString(arrResult));
         
         //开始计算多项式的加法
         int [] bigArr = arr1.length == arrResultLen ? arr1:arr2;       //找出项较多的多项式数组
         int [] smallArr = arr1.length == arrResultLen ? arr2:arr1;     //找出项较少的多项式数组
         for ( int  bigLen = bigArr.length -  1 , smallLen = smallArr.length -  1 ; bigLen >=  0 ; bigLen--, smallLen--){
             //逆序数组进行计算,这样就可以实现项的幂一一对应
             if (smallLen >  0 ){
                 //小的多项式数组的第0项只是表示最高次幂,对实际计算没有用处,这里只计算小的多项式数组第0项之后的值
                 arrResult[bigLen] = bigArr[bigLen] + smallArr[smallLen];
             else  {
                 //再往前走,如果smallArr已经到达了第0项,则只把bigArr中相应的值直接保存到arrResult中
                 arrResult[bigLen] = bigArr[bigLen];
             }
         }
         
         //输出结果多项式的数组
         System.out.println();
         System.out.println(Arrays.toString(arrResult));
         
     }
}

    执行结果如下:

1
2
3
4
5
6
[5, 2, 3, 0, 5, 4, 1]
[3, 2, 1, 1, 2, 2]
 
[0, 0, 0, 0, 0, 0, 0]
 
[5, 2, 5, 1, 6, 6, 3]




本文转自 xpleaf 51CTO博客,原文链接:http://blog.51cto.com/xpleaf/1976984,如需转载请自行联系原作者
相关文章
|
7月前
|
Java
Java 数组学习笔记
本文整理Java数组常用操作:遍历、求和、查找、最值及二维数组行求和等典型练习,涵盖静态初始化、元素翻倍、去极值求平均等实例,帮助掌握数组基础与应用。
|
8月前
|
存储 缓存 Java
Java数组全解析:一维、多维与内存模型
本文深入解析Java数组的内存布局与操作技巧,涵盖一维及多维数组的声明、初始化、内存模型,以及数组常见陷阱和性能优化。通过图文结合的方式帮助开发者彻底理解数组本质,并提供Arrays工具类的实用方法与面试高频问题解析,助你掌握数组核心知识,避免常见错误。
|
8月前
|
机器学习/深度学习 Java 编译器
解锁硬件潜能:Java向量化计算,性能飙升W倍!
编译优化中的机器相关优化主要包括指令选择、寄存器分配、窥孔优化等,发生在编译后端,需考虑目标平台的指令集、寄存器、SIMD支持等硬件特性。向量化计算利用SIMD技术,实现数据级并行,大幅提升性能,尤其适用于图像处理、机器学习等领域。Java通过自动向量化和显式向量API(JDK 22标准)支持该技术。
347 4
|
9月前
|
存储 Java 索引
java 数组
在 Java 中,数组是一种数据结构,用于存储多个相同类型的数据元素。数组的大小一旦创建后就不能改变,因此它是固定长度的。Java 数组是一种 对象,即使它存储的值是基本类型(如 int、double 等),它也是一个对象引用。
213 0
|
9月前
|
自然语言处理 Java Apache
在Java中将String字符串转换为算术表达式并计算
具体的实现逻辑需要填写在 `Tokenizer`和 `ExpressionParser`类中,这里只提供了大概的框架。在实际实现时 `Tokenizer`应该提供分词逻辑,把输入的字符串转换成Token序列。而 `ExpressionParser`应当通过递归下降的方式依次解析
457 14
|
11月前
|
存储 人工智能 Java
打乱数组内容引发的问题( Java)
本文介绍了两种实现数组随机打乱的方法,并深入探讨了Java中原始数据类型与对象类型的差异。方法一通过自定义随机数交换数组元素位置,方法二借助`Collections.shuffle()`函数完成数组打乱。同时,文章详细解析了`int`和`Integer`的区别,包括声明方式、内存占用、初始化以及对象特性等,并讲解了自动装箱与拆箱的功能,帮助读者更好地理解Java的基础知识。
176 0
|
存储 Java 数据挖掘
Java 中数组的多种定义方式
本文深入解析了Java中数组的多种定义方式,涵盖基础的`new`关键字创建、直接初始化、动态初始化,到多维数组、`Arrays.fill()`方法以及集合类转换为数组等高级用法。通过理论与实践结合的方式,探讨了每种定义方法的适用场景、优缺点及其背后的原理,帮助开发者掌握高效、灵活的数组操作技巧,从而编写更优质的Java代码。
618 0
|
人工智能 Java
Java 中数组Array和列表List的转换
本文介绍了数组与列表之间的相互转换方法,主要包括三部分:1)使用`Collections.addAll()`方法将数组转为列表,适用于引用类型,效率较高;2)通过`new ArrayList<>()`构造器结合`Arrays.asList()`实现类似功能;3)利用JDK8的`Stream`流式计算,支持基本数据类型数组的转换。此外,还详细讲解了列表转数组的方法,如借助`Stream`实现不同类型数组间的转换,并附带代码示例与执行结果,帮助读者深入理解两种数据结构的互转技巧。
925 1
Java 中数组Array和列表List的转换
|
存储 Java 索引
Java 复制数组
本文介绍了Java中数组的基础知识与常用操作,包括数组的概念、创建、访问元素、遍历、复制、排序和搜索等方法。同时详细讲解了数组的五种赋值方式,并通过代码示例演示了求总和平均值、最大最小值、升序降序排序及Arrays类的常用方法。内容深入浅出,适合初学者学习掌握Java数组的核心功能与应用场景。
292 2

热门文章

最新文章