(一)基于IDEA的JAVA基础14

在看今天的重点二维数组前,先做俩个练习复习一下,热热脑子:

求数组内的最大值/最小值

这个就是挨个比较换一下位置

假设有这么一组数组{16,48,48,54,3}

public class Test01 {

public static void main(String\[\] args) {

int \[\] num = {16,48,54,3};

//用max接收数组第一个数据

int max=num0;

//用循环挨个比较数组中的数据,遇到大的就换一下位置

for (int i=0; i< num.length; i++){

if (max<numi){

max = numi;

}

}

System.out.println(max);

}

}

在数组中插入数据并排列

假如这里有一组排好的数据,要插入一个数据,并保持排序,分析一下: 获取到数据插入的位置(下标),后面的数据依次往后挪。

public class Test01 {

public static void main(String\[\] args) {

int \[\] num= new int6;

num0=;132

num1=88;

num2=84;

num3=34;

num4=13;

/*//写的时候可以遍历一遍看看是否赋值成功

for (int nums:num){

System.out.println(nums);

}*/

//定义我们输入数据的下标

int index = 0;

Scanner input = new Scanner(System.in);

System.out.println("请输入添加数据");

int add = input.nextInt();

//判断我们输入的成绩所占的下标

for (int i=0; i<num.length; i++){

if (add>numi){

index =i;

//大于换位后立刻跳出,继续循环没有意义

break;

}

}

//让后面的值后退

for (int j= num.length-1; j>index; j--){

numj =numj-1;

}

//把我们输入的数据放入数组

numindex=add;

//遍历结果

for (int nums:num){

System.out.println(nums);

}

}

}

但我们想问题不能太局限,如果输入的的个负数会怎么样?

问题出现了,直接给它放到最上面,这是为啥,因为我们的判断输入数据所在下标的时候,add不大于任意数组内数据,所以它压根就插不进去,那咋整,在判断中严密逻辑即可

if (add>numi){

index =i;

//大于换位后立刻跳出,继续循环没有意义

break;

}else {

index=i;

**}**后面加一个else,i进行到最后一个,还是无法进行index =i;这一步时,说明我们插入的数据最小,最后的i直接赋值给index.即可

二维数组

冒泡排序

一种排序方法,通俗来说就跟泡泡一样往上走进行排序的意思,冒泡排序依靠两层循环,外层控制次数,内层逐个比较。

降序比较:从比较比较最前面相邻的两个数字开始,依次与后面比较,大的换到最前面。

反之升序就是小的换到最前面。

例如:

降序,1,6,8,4,5 ,就是1先与6比较,6>1就换到最前面,在依次和后面1,8,4,5比较,遇到大于它的8再换位置,再依次和后面的数字比较,第一个数确定好后,第二个,第三个...按照相同的方法排列。

直接来看例子:

有一组数据{2,5,6,1,3,4}要求冒泡降序

public class Test01 {

public static void main(String\[\] args) {

int \[\] nums={2,5,6,1,3,4};

//冒泡排序 外层 循环次数

for (int i=0; i< nums.length; i++){

//内层 比较

for (int j=i+1; j< nums.length; j++){

//如果后面数据(j=i+1)大于前面数据,位置互换

if (numsj>numsi){

int a=numsi;

numsi=numsj;

numsj=a;

}

}

}//遍历出结果

for (int num:nums){

System.out.println(num);

}

}

}

升级一下,用用户输入的数据进行排序

public class Test02 {

public static void main(String\[\] args) {

//声明数组,接收用户输入数据

int \[\] nums=new int5;

Scanner input = new Scanner(System.in);

//使用for循环依次录入五组数据

for (int i=0; i< nums.length; i++){

System.out.println("请输入第"+(i+1)+"个数据");

int add = input.nextInt();

//把接收的数据放进数组

numsi=add;

}

//冒泡进行排序(在不同的作用域,可以使用相同的变量名)

for (int i=0; i< nums.length; i++){

for (int j=i+1; j< nums.length; j++){

if (numsj>numsi){

int a=numsi;

numsi=numsj;

numsj=a;

}

}

}

for (int num:nums){

System.out.println(num);

}

}

}

没什么太大区别,就是多了接收数据放进数组的一步。

今天先只说冒泡排序这一小块,详细的明天说

相关推荐
蜗牛一步步往上爬1 小时前
第十六章 C++语言在深度学习中的应用
开发语言·c++·深度学习
这个昵称不容易2 小时前
SpringBoot「衣依」服装销售平台:144个Java文件180个接口,从挑衣服到收货评价整条链路都在
java·springboot·毕设
计算机毕设定制辅导-无忧学长3 小时前
《基于微信小程序的居家医疗陪护预约系统设计与实现》
java·spring boot·微信小程序·uniapp·居家医疗陪护预约系统
张张123y3 小时前
DSH 插件调试避坑:client.js 设置面板、热重载与高频报错排查表
开发语言·javascript·人工智能·开源·ecmascript·后端开发·ai agent
文丑颜不良啊4 小时前
LeetCode2221~2240题目解析
java·leetcode
秋饼4 小时前
Computer Use Agent Java 落地实战:感知-行动循环、执行器与安全围栏生产级实现
java·ai·技术分享·后端开发
冻柠檬飞冰走茶6 小时前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划
文丑颜不良啊6 小时前
LeetCode2161~2180题目解析
java·leetcode
FRing036 小时前
vue2干货总结7(自定义指令、插槽、单页应用程序、路由的使用(VueRouter))
开发语言·前端·vue.js·vue2
雪落漂泊6 小时前
C++算法 二分查找篇(上)
开发语言·c++·算法