java⑿
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⑿的更多相关文章
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题
背景起因: 记起以前的另一次也是关于内存的调优分享下 有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...
- Elasticsearch之java的基本操作一
摘要 接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...
- 论:开发者信仰之“天下IT是一家“(Java .NET篇)
比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...
- 故障重现, JAVA进程内存不够时突然挂掉模拟
背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...
- 死磕内存篇 --- JAVA进程和linux内存间的大小关系
运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...
- 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用
有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...
- Java多线程基础学习(二)
9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...
- Java多线程基础学习(一)
1. 创建线程 1.1 通过构造函数:public Thread(Runnable target, String name){} 或:public Thread(Runnable target ...
- c#与java的区别
经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...
随机推荐
- Golang websocket
环境:Win10 + Go1.9.2 1.先下载并引用golang的websocket库 ①golang的官方库都在https://github.com/golang下,而websocket库在/ne ...
- Lua和C++交互 学习记录之九:在Lua中以面向对象的方式使用C++注册的类
主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3 参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 在 ...
- css特效博客
1. 前端网上: e344657992 http://www.qdfuns.com/notes/15477/02cb463c28d9fe69ee0bc804448b8316.html
- (4)进程---daemon守护线程和join阻塞
join ()方法:主线程A中,创建了子线程B,并且在主线程A中调用了B.join(),那么,主线程A会在调用的地方等待,直到子线程B完成操作后,才可以接着往下执行,那么在调用这个线程时可以使用被调用 ...
- Android SDK无法更新的解决方法
一.说明: Android 更新sdk时访问google很慢,有时连接不上,可利用国内的某些镜像网站实现Android SDK在线更新. 二.解决方法: 在SDK Manager -> tool ...
- ubuntu 16.04 下安装smplayer视频播放器
安装平台:ubuntu 16.04 1.sudo apt-add-repository ppa:rvm/smplayer 2.sudo apt-get update 3.sudo apt-get in ...
- HTML第六章总结
Something Serious of HTML 这一章节主要讲了 HTML 的历史,还有如何使得 HTML 更加规范. HTML's Brief History 在 HTML4 之前,struct ...
- Feign二: @FeignClient 接口调用
在项目的启动文件加入:@EnableFeignClients 注解, import org.springframework.boot.SpringApplication; import org.spr ...
- 雷林鹏分享:jQuery EasyUI 窗口 - 创建简单窗口
jQuery EasyUI 窗口 - 创建简单窗口 创建一个窗口(window)非常简单,我们创建一个 DIV 标记: Some Content. 现在运行测试页面,您会看见一个窗口(window)显 ...
- 雷林鹏分享:C# 运算符
C# 运算符 运算符是一种告诉编译器执行特定的数学或逻辑操作的符号.C# 有丰富的内置运算符,分类如下: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 杂项运算符 本教程将逐一讲解算术运算 ...