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. RestTemplate学习

    在学习spring cloud的时候,用到了RestTemplate,找到一篇博客,写的很好,学习转载! 文章转载自:https://blog.csdn.net/itguangit/article/d ...

  2. js正则表达式的积累

    验证数字:^[0-9]*$ 验证n位的数字:^\d{n}$ 验证至少n位数字:^\d{n,}$ 验证m-n位的数字:^\d{m,n}$ 验证零和非零开头的数字:^(0|[1-9][0-9]*)$ 验证 ...

  3. DirectX学习之第一个可运行的工程

    学习一门开发语言的第一件事情当然是搭建一个可运行的环境,然后运行一个可成功执行的案例. 本人在学习DirectX的第一个工程的时候,参考了雨凇MoMo的一篇文章(https://www.xuanyus ...

  4. Asp.net core 学习笔记 ( OData )

    2018-12-10 更新 : 从前我都是把 entity 直接用于 odata 曝露 api 给程序用. 如果这个程序是我们自己写的前端,这样的方式非常好,因为就好比前端可以直接对数据库每一个表做操 ...

  5. 拒绝采样 Rejection Sampling

    2018-12-09 16:40:30 一.使用Rand7()来生成Rand10() 问题描述: 问题求解: 这个问题字节跳动算法岗面试有问到类似的,有rand6,求rand8,我想了好久,最后给了一 ...

  6. C# 遍历文件夹筛选目标文件

    有近400G的数据,首先需要写程序把目标文件标准化名称(相当耗时,各种情形,间接说明在数据采集过程中标准化操作的重要性,这样会给后续处理带来很多不必要的麻烦和消耗) 网上找了个方法还不错,还有一种递归 ...

  7. word中的交叉引用

    分别使用“交叉引用”依次插入所需应用文献编号范围的第一个和最后一个. 所需引用处出现“[1][3]”   在引用处对两个编号操作:点击鼠标右键-选择“切换域代码”. [1]变为” {REF _Ref4 ...

  8. javascript之封装(引用网络)

    一. 例:事件监听封装 jQuery 中的事件监听,完全可以用 addEventListener/attachEvent 模拟,分别对应于现代浏览器和 IE ,可以把两个方法封装一下,但是为了方便,这 ...

  9. p1460 Healthy Holsteins

    列举所有的子集找最优就行. #include <iostream> #include <cstdio> #include <cmath> #include < ...

  10. c 语言连续输入字符型数据

    #include<stdio.h> #include<stdlib.h> void Input1(char* &str){ // /* 这种情况下想要逐个输入字符串数组 ...