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添加/移除事件

    事件的传播方式 <div id="father"> <div id="son"></div> </div> &l ...

  2. Visual Studio常用设置

    ●Visual Studio 2008以后,修改代码中大括号的颜色:Tools-->Environment-->Fonts and Colors-->右边[Display items ...

  3. MYSQL去除"/r/n"

    #去除回车符号/r/n UPDATE t_week_power_line_loss SET `line_loss_rate` = REPLACE( REPLACE( `line_loss_rate` ...

  4. unittest单元测试简单介绍

    unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果.今天笔者 ...

  5. 主元素问题 Majority Element

    2018-09-23 13:25:40 主元素问题是一个非常经典的问题,一般来说,主元素问题指的是数组中元素个数大于一半的数字,显然这个问题可以通过遍历计数解决,时间复杂度为O(n),空间复杂度为O( ...

  6. 动态规划-填格子问题 Domino and Tromino Tiling

    2018-09-01 22:38:19 问题描述: 问题求解: 本题如果是第一看到,应该还是非常棘手的,基本没有什么思路. 不妨先从一种简化的版本来考虑.如果仅有一种砖块,那么,填充的方式如下.

  7. Java原子操作类AtomicInteger应用场景

    Java中有那么一些类,是以Atomic开头的.这一系列的类我们称之为原子操作类.以最简单的类AtomicInteger为例.它相当于一个int变量,我们执行Int的 i++ 的时候并不是一个原子操作 ...

  8. 记录python接口自动化测试--根据excel中的期望输出是否存在请求返回的响应来判断用例是否执行成功(第八目)

    1.首先在excel中的expectValue列填好预期结果值 这里判断接口成功的依据是预期结果值是否存在于接口返回的数据中. 首先,要知道在之前封装的get/post请求方法中返回的是‘str’,也 ...

  9. echarts画多条一元回归线

    理论上两点一线,只要两个点即可 option = { title: { text: '', left: 'center' }, tooltip: { // trigger: 'item', // fo ...

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

    20165327 2017-2018-2 <Java程序设计>第4周学习总结 教材内容总结 第五章 继承是一种由已有的类创建新类的机制. class 子类名 extends 父类名{ - ...