1.插入:

插入算法:

前提是数组中的数据必须是有序的

public static void main(String[] args) {
// 先定义一个int类型的数组
int[] nums = new int[6];
nums[0] = 1;
nums[1] = 5;
nums[2] = 7;
nums[3] = 9;
nums[4] = 10;
/**
* 我们想把 一个数字 插入到数组中 并且保证 数组的顺序
*
* 分析:
* 01.首先那我们输入的这个数字 循环和数组中的每一个元素进行比较大小
* 02.发现我们输入的这个数字 小于 某个元素的时候 (数组是升序 使用 小于 降序使用大于)
* 那么这个元素的下标 应该是我们输入的这个数字的下标
*/
Scanner input = new Scanner(System.in);
int index = nums.length - 1; // 存储插入数字的下标
System.out.println("请您输入一个数字:");
int num = input.nextInt();
for (int i = 0; i < nums.length; i++) {
if (num < nums[i]) { // 找到插入数字的下标
index = i;
break; // 找到下标 必须退出
}
}
System.out.println("您插入数字的下标是:" + index);
/**
* 分析 :
* 01.从哪里开始后移??
* 从我们插入数字的下标位置开始往后移???
* 难道是5往后移??
* 应该是10先往后移!!! 从后往前依次后移 并且赋值
* 02.把插入的数字放进数组的指定位置
*/
for (int i = nums.length - 1; i > index; i--) {
nums[i] = nums[i - 1];
}
nums[index] = num; // 赋值
System.out.println(Arrays.toString(nums)); // 把数组转换成Stirng
}

2.冒泡排序:

01.两两相比,小的靠前

02.等量转换

public static void main(String[] args) {
// 声明一个数组
int[] nums = { 10, 5, 7, 20, 50 };

/**
* 外层循环控制比较几轮 数组长度-1
* 内层循环控制一轮比较多少次! 数组长度-1-i
* 外层循环执行一次! 内层循环执行一轮!
*
*
* 如果说外层循环的变量是i=0
* 内层循环的变量是j=0 并且j<5!
*
*
* 那么: i=0的时候 j会从0到4
* i=1的时候 j也会从0到4 以此类推
* 直到i不满足条件的时候 双重循环才结束!
*/

for (int i = 0; i < nums.length - 1; i++) { // 外层循环 控制轮数
System.out.println("外层循环====》第" + (i + 1) + "轮");
for (int j = 0; j < nums.length - 1 - i; j++) { // 内层循环
// 两两相比小靠前!
if (nums[j] > nums[j + 1]) { // 等量转化
int temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
}
}

for (int i : nums) {
System.out.println(i);
}
}

3.二维数组:

实质还是一维数组!
只不过数组中的每一个元素,又是一个数组而已!

01.

// 在声明二维数组的时候 必须指定外围数组的长度
int[][] nums = new int[2][2]; // int[][] nums = { {x,x}, {x,x} };
// 给nums数组中的第一个数组的第一个元素赋值
nums[0][0] = 5;
nums[0][1] = 51;
nums[1][0] = 6;
nums[1][1] = 62;

for (int i = 0; i < nums.length; i++) {
for (int j = 0; j < nums[i].length; j++) {
System.out.println(nums[i][j]);
}

02.

int[][] nums = { { 1 }, { 2, 5 }, { 7, 9 } };
/**
* 上面定义的二维数组 有几个元素
* 01.输出二维数组的长度
*二维数组中每一个元素的长度??我们怎么获取呢?
* 02.循环二维数组 之后 nums[i]代表每一个元素,所以就.length
* 我想获取每个值!!!
*/
// System.out.println(nums.length); 2维数组的长度
for (int i = 0; i < nums.length; i++) {
// System.out.println(nums[i].length); 数组中元素的长度
for (int j = 0; j < nums[i].length; j++) {
System.out.println(nums[i][j]);
}

03.

/**
* 3个班级,每班3名学员
* 循环录入成绩
* 求每个班平均分
* 用二维数组
*/
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double[][]scores = new double[3][3];//二维数组来保存班级和班级里的学员数
double sum = 0;//和
double avg = 0;//平均分
for (int i = 0; i < scores.length; i++) {//外层 班级数来控制
System.out.println("第"+(i+1)+"个班级:");
sum = 0;//每个班级算完平均分以后使和归零
for (int j = 0; j < scores[i].length; j++) {//内层 班级人数
System.out.println("请输入第"+(j+1)+"名学员的成绩:");
scores[i][j]= input.nextDouble();
sum = sum + scores[i][j];//每位学员的成绩
}
avg = sum/3;//每个班级平均分
System.out.println("第"+(i+1)+"个班级的平均分是:"+avg);
}

}

04.

/**
* 硕哥电话号
*/
public static void main(String[] args) {
int[]phoneNums = {x,1,x,x,9,8,0,4};//电话号码中的数字
int[]nums = {1,0,3,0,2,6,7,4,4,4,5};//来找到电话号码数组中的数字的下标
int phone = 0;//电话号码初始化
for(int i =0;i<nums.length;i++){//利用for循环输出电话号码
phone = phoneNums[nums[i]];
System.out.print(phone);
}

}

java⑿的更多相关文章

  1. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  2. 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题

    背景起因: 记起以前的另一次也是关于内存的调优分享下   有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...

  3. Elasticsearch之java的基本操作一

    摘要   接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...

  4. 论:开发者信仰之“天下IT是一家“(Java .NET篇)

    比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...

  5. 故障重现, JAVA进程内存不够时突然挂掉模拟

    背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...

  6. 死磕内存篇 --- JAVA进程和linux内存间的大小关系

    运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...

  7. 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用

    有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...

  8. Java多线程基础学习(二)

    9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...

  9. Java多线程基础学习(一)

    1. 创建线程    1.1 通过构造函数:public Thread(Runnable target, String name){}  或:public Thread(Runnable target ...

  10. c#与java的区别

    经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...

随机推荐

  1. JS中的弹窗问题confirm和prompt

    JavaScript-确认(confirm 消息对话框) confirm 消息对话框通常用于允许用户做选择的动作,如:“你对吗?”等.弹出对话框(包括一个确定按钮和一个取消按钮). 语法: confi ...

  2. 关于MySQL大量数据分页查询优化

    select * form user id in(select id from user limit 1000000,10);

  3. 使用spss做方差分析

    还记得上学那会老师专门敲了黑板,强调方差分析很重要..单因素方差分析(Analysis of Variance, ANOVA),如果变量多,就是多因素方差分析,还需要考虑到多重共线性, 也就是线性代数 ...

  4. Go语言学习之7 接口实例、终端文件读写、异常处理

    本节主要内容: 1. 终端读写2. 文件读写3. 命令行参数4. Json5. 自定义错误 1. 终端读写 操作终端相关文件句柄常量    os.Stdin:标准输入    os.Stdout:标准输 ...

  5. Go语言学习之6 反射详解

    1.反射: 定义: 反射就是程序能够在运行时检查变量和值,求出它们的类型.                   可以在运行时动态获取变量的相关信息                   Import ( ...

  6. 20165327 2017-2018-2 《Java程序设计》第6周学习总结

    20165327 2017-2018-2 <Java程序设计>第6周学习总结 教材内容总结 第八章 String类常用方法 public int length() public boole ...

  7. English trip M1 - AC11 May I Help You? 我能帮到你吗? Teacher:Lamb

    In this lesson you will learn to ask for things in shops  在本课程中,您将学习如何在商店中寻找东西 课上内容(Lesson) How are ...

  8. Spring Boot之logback日志最佳实践

    一.Spring Boot日志介绍 Spring Boot对所有内部日志记录使用了Commons Logging,但是底层日志实现是开放的.为Java Util日志记录.Log4J2和Logback提 ...

  9. 微擎查询SQL语句常用

    pdo_fetch:根据SQL语句,查询一条记录 array | boolean pdo_fetch($sql, $params = array()); // :uid 是参数的一个点位符,没有使用引 ...

  10. luffy之多条件登录与极验滑动验证码

    多条件登录 JWT扩展的登录视图,在收到用户名与密码时,也是调用Django的认证系统中提供的authenticate()来检查用户名与密码是否正确. 我们可以通过修改Django认证系统的认证后端( ...