java 基础知识-数组的7种算法(排序、求和、最值、遍历...)
遍历
遍历就是把这个数组的每个元素 显示出来 遍历的方法就是先定义这个数组的大小,然后用FOR循环来完成数组,例如
double[] score = new double[5];
Scanner input = new Scanner(System.in);
for (int i = 0; i < score.length; i++) {
System.out.println("请输入第" + (i + 1) + "位同学的成绩:");
score[i] = input.nextDouble();
}
for (int i = 0; i < 5; i++) {
System.out.println(score[i]);
}
这个就是一个double 型的数组用for去遍历每个元素 而结束条件就是这个数组的最后一个数组 score.length就可以遍历这个数组了
求和
求和就是在遍历的基础上添加一个求和的计数器 就在在for外面定义一个和的变量 这个变量的初始值是0 这样就能达到求和的结果是正确的 求和的公式在for循环里面写这样的目的是因为求和也是在循环的往上加的过程 例如
double sum = 0;
int i;
for (i = 0; i < score.length; i++) {
sum = sum + score[i];
}
System.out.println(score.length + "位同学的成绩是" + sum);
这个就是求和的过程 其他的运算方法就是把这个符号更改下而已
极值
极值的目的就是求一个极端的值 方法就是假定数组里面的一个数据是最大的然后用其他的数据遍历他与他进行对比 如果新的数据值比这个定义的值大的话那么就替换他的这个位置然后继续遍历 遍历结束后就输出这个值就是最大的值或者最小的值 例如
double max = score[0];
for (i = 0; i < score.length; i++) {
if (score[i] > max) { //这里的大于号变成小于号就可以求最小值了
max = score[i];
}
}
System.out.println(i + "位同学的最高成绩是" + max);
这个代码就是求一个极值而且是最大的内个
查找
这个功能就是查询当前的数组是否有你需要的值 就好像你去一个地方去找人是一个意思
查找用到了boolean变量 因为这个功能的目的就是找到与没找到 换句话来说就是 找到了就是真(或假) 没找到就是假(或真)
for循环里面写的if判断
判断方法就是当用户输入的值与数组中的某一个值是一样的那么就输出 否则(else)就没找到 输出不输出随便你
还要判断下用boolean就可以做到 如果是真那么就跳出这个循环并且进入下一个循环 因为boolean在跳出的时候变化成真了 那么在下面的if里面就是以真的形式出现并且输出
例如
boolean flag = false;
System.out.println("请输入您要查找的分数:");
double findScore = input.nextDouble();
for (i = 0; i < score.length; i++) {
if (score[i] == findScore) {
flag = true;//变真了
break;//跳出这个for循环进入下面的if循环
}
}
if (flag) {//由于是上面的boolean变成真了 所以就进入这个if 如果没找到就跳刀下面的else
System.out.println("找到了您所要查找的分数。" + score[i]);
} else {
System.out.println("没有找到您所要查找的分数。");
}
倒置
倒置的意思就是最后一个元素变成第一个元素第一个元素变成最后一个
过程就是折中取半
不遍历整个数组了遍历一半,那么就/2就可以 但是计算机数数的方法是从0开始的也就是说最后一个值里面是没有任何意义的 所以要在最后一个值那-1
并且还要定义一个空的变量 因为要用到三步换值(变量) 不定义也可以
例如
for (i = 0; i < score.length / 2; i++) {
double temp = score[i]; //这里是空变量赋值 三步赋值第一步
score[i] = score[score.length - 1 - i];//右边的值赋到左边那么右边就变成空的值
score[score.length - 1 - i] = temp;//同上 但是这个temp是个临时的值所以他最后是空的没有
}
for (i = 0; i < score.length; i++) {
System.out.println(score[i]);
}
排序
排序是引用的JAVA自带的一个类 所以没有难度 例如
插入
插入的意思就是在这个数组中某一个地方插入一个变量(值),但是一旦插入的这个变量进去那么就会对这个数组产生变化所以数组一定要空出多余的地方,并且要对插入进来的 数据进行判断,判断结束后还要跳出这个判断的if,判断的条件就是:输入进来的值大于数组里的某一个值并且小于这个值前面的那一个值(num[i]-1) 替换这个值跳出 进入下一个循环
例如
int[] num = new int[6];
for (i = 0; i < num.length; i++) {
num[i] = input.nextInt();
}
Arrays.sort(num);
System.out.println("输入您要插入的数:");
int insert = input.nextInt();
for (i = 0; i < num.length; i++) {
if ((insert > num[i]) && (insert < num[i - 1])) {
num[i] = insert;
break;
}
}
for (i = 0; i < num.length; i++) {
System.out.println(num[i]);
}
java 基础知识-数组的7种算法(排序、求和、最值、遍历...)的更多相关文章
- JAVA基础知识之多线程——三种实现多线程的方法及区别
所有JAVA线程都必须是Thread或其子类的实例. 继承Thread类创建线程 步骤如下, 定义Thead子类并实现run()方法,run()是线程执行体 创建此子类实例对象,即创建了线程对象 调用 ...
- java基础知识—数组
1.数组:是一个变量,存储相同数据类型的一组数据. 2.数据的优点:减少代码量.易查找. 3.数组的使用步骤: 1)声明数组:int scores []: 2)开辟空间:scores = new in ...
- java基础知识回顾之javaIO类--File类应用:递归深度遍历文件
代码如下: package com.lp.ecjtu.File.FileDeepList; import java.io.File; public class FileDeepList { /** * ...
- JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)
本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web ...
- 第二十九节:Java基础知识-类,多态,Object,数组和字符串
前言 Java基础知识-类,多态,Object,数组和字符串,回顾,继承,类的多态性,多态,向上转型和向下转型,Object,数组,多维数组,字符串,字符串比较. 回顾 类的定义格式: [类的修饰符] ...
- Java基础知识总结(超级经典)
Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...
- 毕向东—Java基础知识总结(超级经典)
Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...
- 沉淀,再出发:Java基础知识汇总
沉淀,再出发:Java基础知识汇总 一.前言 不管走得多远,基础知识是最重要的,这些知识就是建造一座座高楼大厦的基石和钢筋水泥.对于Java这门包含了编程方方面面的语言,有着太多的基础知识了,从最初的 ...
- java基础知识精华
转载:https://www.jianshu.com/p/6c078abb720f java基础知识 java内存模型 java运行时数据区域 hashMap 如何解决冲突 存储方式 冲突达到一定数量 ...
随机推荐
- Python2和Python3共存安装
记录下: 先下载Python2.7.6,安装完成,不要添加到path中: 再下载Python3.4.3,安装,不要添加到path中. 进入 Python2: py -2 进入Python3: py - ...
- python学习(十)元类
python 可以通过`type`函数创建类,也可通过type判断数据类型 import socket from io import StringIO import sys class TypeCla ...
- std::sort运行出core(segment fault)
http://note.youdao.com/noteshare?id=6aae09345e85ab55fe24ac959118a747
- 手脱ACProtect v1.35(无Stolen Code)
1.载入PEID ACProtect v1.35 -> risco software Inc. & Anticrack Soft 2.载入OD,需要注意的是,异常选项除了[内存访问异常] ...
- IOS性能调优系列:使用Time Profiler发现性能瓶颈
硬广:<IOS性能调优系列>第五篇,预计会有二十多篇,持续更新,欢迎关注. 之前四篇都是关注于内存方面,分析了内存泄漏.僵尸对象.内存分配,本篇介绍Time Profiler工具的使用,开 ...
- REST式的web服务
“REST”是罗伊·菲尔丁(Roy Fielding)在他的博士论文中创造的缩写.菲尔丁论文的第5章勾画出了被称为REST风格或REST式的Web服务的知道原则.他是HTTP1.1规范的主要作者和Ap ...
- linux shell学习三
Shell for循环 Shell for循环的语法如下所示 for 变量 in 列表 do command1 command2 ... commandN done 举例: ..} do echo $ ...
- libuv移植到ios
libuv官网只提供了os x的编译方法,没有IOS的.既然os x和ios的系统内核差不多,并且编译工具都是xcode,那我们只要重新指定cpu架构,就可以编译出ios版的了. 1.安装python ...
- c++数组遍历十种方式
int ia[3][4] = {1,2,3,4,5,6,7,8}; //下标 for (int i = 0; i < 3; i++) { for (int j = 0; j < 4 ...
- Bargaining Table
Bargaining Table time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...