JAVA用迭代的思想,不遍历,找出数组中的最大值
/** * 2015年5月28日下午9:52:57 * * @author season TODO 测试已通过,获取财富值 * */public class ArrayOperation { /** * 对数组 arr 进行冒泡排序升序排序 * * @param arr * 目标数组 */ public static void bubbleToUp(int[] arr) { if (null == arr)// 数组为空时,退出该方法 return; for (int i = 0; i arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } /** * 使用选择排序法对目标数组进行降序排序 * * @param arr * 目标数组 */ public static void selectToDown(int[] arr) { for (int i = 0; arr != null && i arr[flag]) flag = j; } if (flag != i) { int temp = arr[i]; arr[i] = arr[flag]; arr[flag] = temp; } } } /** * 遍历数组所有元素 * * @param arr * 目标数组 */ public static void displayArray(int[] arr) { System.out.println(); for (int num : arr) System.out.print(" " + num); } public static void main(String[] args) { // 初始化数组 int[] arr = { 20, -878, 90, 78, 89, -908 }; // 首先进行冒泡排序(升序) bubbleToUp(arr); displayArray(arr); // 然后进行选择排序(降序) selectToDown(arr); displayArray(arr); } }
import java.util.Scanner; /** * 2015年5月31日下午12:01:08 * * @author season TODO 添加了输进,望采纳 * */public class ArrayOperation { //添加下面这个方法,前面的方法不变,因为字数限制,不能粘贴全部代码,不好意思 /** * initArray TODO 初始化目标数组 * * @param arr * 目标数组 */ public static void initArray(int[] arr) { Scanner input = new Scanner(System.in); for (int index = 0; arr != null && index < arr.length; index++) { System.out.print("
Input arr[" + index + "]: "); arr[index] = input.nextInt(); } input.close(); } public static void main(String[] args) { // 定义数组 int[] arr = new int[5]; initArray(arr); System.out.println("
Befor sort: "); displayArray(arr); // 首先进行冒泡排序(升序) bubbleToUp(arr); displayArray(arr); // 然后进行选择排序(降序) selectToDown(arr); displayArray(arr); } }
用排序啊,Arrays.sort(),直接从小到大排序了,取index[0]和index[数组最大的长度]
现在java8中的stream的IntStream可以方便找到数组中的最大值,而且现在stream已经把遍历内置到了jdk中,代码更整洁
通过把int数组直接转化为IntStream,然后再用内置的max方法直接求得最大值即可
示例代码如下:
int[] arr = {2,53,67,33,12,90,49};
System.out.println(IntStream.of(arr).max().getAsInt());
运行结果
java8的新特性stream(流)处理集合增加更多便利,同时提升了运算的效率,可以说是优雅的编程形式,把循环内置到了jdk中,只暴露了你想要什么,这种已经都是声明式编程,不再是以往的命令式编程了
想了解更多的关于stream的知识,可以去看看这篇文章
http://www.ibm.com/developerworks/cn/java/j-lo-java8streamapi/
public class FindMaxNum {
public static void main(String[] args) {
int ary[] = { 6, 6, 8, 9, 10 };
int a = ary[0];
System.out.println(getMaxNum(ary, a));
}
public static int getMaxNum(int src[], int a) {
if (src.length == 0)
return -1;
if (src.length == 1) {
if (src[0] < a) {
return a;
} else {
return src[0];
}
}
if (a < src[0]) {
a = src[0];
}
int length = src.length;
int des[] = new int[length - 1];
System.arraycopy(src, 1, des, 0, length - 1);
int maxNum = getMaxNum(des, a);
return maxNum;
}
}
少了一个判断,我用递归迭代,没次移走一个数,不符合你要求?
public static int findMax(int[] nums, int i) {
if (i == 0) return nums[0];
return Math.max(nums[i], findMax(nums,i - 1));
}
public static void main(String[] args) {
int[] nums = {1,2,3,4,5};
System.out.println(findMax(nums,nums.length - 1));
}
请问为什么IntStream编译说找不到符合
数组不是有个排序方法么 Arrays.sort(ia);
不过方法的内部实现是不是遍历我就不知道了,
最后直接打印最后一个数组元素就好了,ia[i], i = ia.length-1
《奇异西部》是一款多么不走寻常路的沉浸式模拟游戏?
在D社线上发布会结束后,科兰托尼奥想媒体讲述了《奇异西部》与Arkane的同类作品有哪些不同,WolfEye分布在世界各地的开发者们怎样远程协作,以及他和乐队搭档艾娃·戈尔(Ava Gore)为 游戏 创作音乐的体验。 科兰托尼奥还解释了 游戏 编剧克里斯·阿瓦隆(Chris Avellone)在《奇异西部》项目中所扮演的角色。上个月,几位...
Java没有虚拟机什么都干不了,为什么还有人用呢?
这可能要从操作系统上来说 服务器操作系统有很多 收费的系统有 unix ,windows等 免费的主要是 linux.一般来说 windows 对的数据库是mssql 这两者的使用费用都相当昂贵. 具体来说都是好几十万的算.unix的话 最稳定,一般国家基础电信系统都是unix. unix是最贵的操作系统了听说是百万级别的(money)所...
现在学java有前途吗?没有任何计算机基础的人
现在学java是有前途的,是java软件开发属于技术岗位,而技术岗位本身对学历没有太多要求,在加上java技术人才紧缺,对学历方面的要求就更加宽松了。千锋教育就有线上免费Java线上公开课。 很多0基础的新手小白通过机构培训,大多数四到六个月就可以入门java。而且培训机构有系统的教学体系和经验丰富的讲...
JAVA培训内容有哪些?
对于初学者来说,只要在学习过程中,掌握科学的学习方法,即使零基础的入行者也能充分掌握Java开发技术,那究竟如何才能学习Java呢?第一阶段:企业入门级项目阶段,可掌握Java核心基础、面向对象、JavaSE API、MySQL数据库、JDBS、HTML+CSS、Servlet、JSP、JavaScript等,可以完成常见中小型互联网项目开发,...
ava集合类,快速失败(fail-fast)和安全失败(fail-safe)的区别是什么?
Iterator的安全失败是基于对底层集合做拷贝,因此,它不受源集合上修改的影响。java.util包下面的所有的集合类都是快速失败的,而java.util.concurrent包下面的所有的类都是安全失败的。快速失败的迭代器会抛出ConcurrentModificationException异常,而安全失败的迭代器永远不会抛出这样的异常。
蓝牙耳机什么牌子的好用
在硬件上,采用陶瓷天线,摒弃业内大部分厂家选用的FPC天线方案,进一步提升射频性能,更远更稳定,并且Nank南卡lite拥有独立芯片和完整电路,两边都是主耳机,搭配闪连技术,单双耳模式无缝连接,再加上Nank南卡低延迟游戏加速模式,在蓝牙性能上进行过多次研发和迭代,拥有独创分体式深度蓝牙功耗优化技术,...
学习JAVA最重要的是什么?
是坚持,以及找到好的Java教程:就从基础开始说起 Javase Java基础所包含的,Java零基础必备安装包、JavaSE301集、Java教程零基础2019、Java教程零基础2019(ava基础语法、面向对象、异常、数组、常用类、集合、IO流、线程、反射机等等)、XML、Tomcat服务器开发;其中Java零基础2019这视频教程系列可以去B站...
自学Java 怎么入门?
使用Javaweb进行企业级开发是完全可以的,但是开发效率比较低,所以对常用的逻辑操作进行封装就形成了框架,因此框架是企业开发的入门技能。 热门框架板块主流框架有如下几个:Spring框架,占据统治地位,其生态系统涉及各个方面解决方案;MyBatis框架,使用ORM思想对数据库进行操作。 该板块学习后,就可以进行真实企业级项目开发了...
2021年大学生百元到千元级别的蓝牙耳机选购?
Xisem西圣Ava蓝牙耳机的配置在500元以内这个价位可以说是顶配的标准,采用的是千元机才有的定制芯片+全频动铁单元组合+5.2的蓝牙,实现蓝牙传输稳定的同时音质质量也有了保障。13mm大尺寸动圈复合振膜,双主机单双耳无缝切换,佩戴自检(戴上即播放,摘下即暂停),双耳降噪通话,高清通话,超强音质,触摸...
鄣油赖诺: 2L谁说必须用递归的,只是递归写起来简单罢了,迭代的方法一样OK; 深度优先或者广度优先都可以 LZ的问题用迭代的方法可以这样解决: 1.把当前节点(需要查找字节点的节点)压入一个堆栈,这步是初始化; 2.从堆栈中弹出一个节点,如果该节点是叶子节点,则这条路已经走不通了,如果是非叶子节点,那就把这个节点的所有子节点压入堆栈 3.重复第二步直到堆栈为空 上面三步就能遍历当前节点的所有字节点 递归的话:f(node){ for(遍历node的所有子节点){ child=当前子节点 if(child为叶子节点){ ..return ;} else{ f(child) } } }
东港区19842323712: 在java中“迭代”是什么意思? - ?
鄣油赖诺: 重复的反馈某一过程(操作)叫迭代,在java中,就是循环重复的进行某一操作,比如一个程序要累加1到100的和, 那么只要定义一个变量sum,让它重复的进行累加操作: int sum =0; for( int i=1; i<=100; i++ ){sum = sum +i;} 其中执行一次sum = sum + i ;就称之为一次迭代,每一次迭代得到的结果(sum + i 的和)会作为下一次迭代的初始值(结果赋值给sum变量后,这个变量又作下一次迭代的初始值);这就是迭代与普通循环的区别.
东港区19842323712: 用JAVA语言实现二叉树的层次遍历的非递归算法及查找算法. - ?
鄣油赖诺: 先序非递归算法 【思路】 假设:T是要遍历树的根指针,若T != NULL 对于非递归算法,引入栈模拟递归工作栈,初始时栈为空. 问题:如何用栈来保存信息,使得在先序遍历过左子树后,能利用栈顶信息获取T的右子树的根指针? 方法1:访...
东港区19842323712: Java中 迭代 遍历 递归 这几个概念怎么理解 - ?
鄣油赖诺: 遍历:对于集合数据而言,访问所有的数据即为遍历.遍历的方法可以用递归或者迭代.迭代:一般是用同一个参数来表示每个集合元素,用循环来实现.递归:是利用计算机的堆栈的概念,一般通过调用相同的函数来实现,函数中一般会设置终止的语句.举个例子 int fun(int n){ if (1 == n) {//终止语句 return 1; } else { return n*fun(n-1); //递归 } } 希望有帮助
东港区19842323712: java迭代器到底怎么使用 - ?
鄣油赖诺: 我们在使用List,Set的时候,为了实现对其数据的遍历,我们经常使用到了Iterator(跌代器). 使用跌代器,你不需要干涉其遍历的过程,只需要每次取出一个你想要的数据进行处理就可以了.但是在使用的时候也是有不同的. List和Set都有...
东港区19842323712: 在java中集合中迭代是怎么一回事儿?为什么要进行集合的迭代? - ?
鄣油赖诺: 迭代可以遍历并选择集合中的每个对象而不改变集合的结构,比如你访问集合的时候用集合自带的remove()方法去除集合的元素,这样会是使集合的Size()改变,循环的时候会出错;而把集合放入迭代器,用迭代器的remove()就不会出现问题
东港区19842323712: java 迭代的作用 - ?
鄣油赖诺: 迭代:在java中的使用一般使用在集合中和foreach遍历中,你可以认为一个箱子里放了很多的书.我们想要知道这些书的名字,那么我们通常的做法就是,拿一个箱子(这个箱子里只可以放一个书),每次用这个箱子取书,那么我们拿的那个箱子就是相当于缓冲只用的,所以迭代就差不多是这个意思,这是我个人的理解,希望对你有点帮助
东港区19842323712: java中迭代器优缺点?在什么时候可以使用迭代器?什么时候不推荐使用? - ?
鄣油赖诺: 迭代器一般在集合中进行遍历的时候用,主要用于无序的排列,它是带有指针的,每迭代一次指针都会后移一位,一般用增强for代码比较简洁.
东港区19842323712: 用迭代法怎么编写Java程序:牛顿迭代法 - ?
鄣油赖诺: public static void main(String[] args) { Test test = new Test(); test.addNum(); } private int num = 0; public void addNum() { num++; if(num==10){ System.exit(0); }else{ System.out.println(num); addNum(); } } 一个 很简单的程序 ! 其实迭代很简单 就是 判断一些条件 然后 自己调用自身!就行了
东港区19842323712: java迭代器到底怎么使用?
鄣油赖诺: 链表的一些方法使用和迭代器的使用(把链表内的元素迭代出),你可以看下~ import java.util.*; public class test11 { static LinkedList list = new LinkedList(); String[] arrays = {"1","2","3","4","5"}; static Iterator it ; public static void ...