(一)基于IDEA的JAVA基础14

ops/2024/9/22 17:33:17/

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

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

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

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

public class Test01 {

    public static void main(String[] args) {

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

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

        int max=num[0];

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

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

            if (max<num[i]){

                max = num[i];

            }

        }

        System.out.println(max);

    }

}

5e31283905514ba083eccec1c7fa20ba.png

在数组中插入数据并排列

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

public class Test01 {

    public static void main(String[] args) {

        int [] num= new int[6];

        num[0]=;132

        num[1]=88;

        num[2]=84;

        num[3]=34;

        num[4]=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>num[i]){

                index =i;

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

                break;

            }

        }

        //让后面的值后退

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

            num[j] =num[j-1];

        }

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

        num[index]=add;

        //遍历结果

        for (int nums:num){

            System.out.println(nums);

        }

    }

}

832b102e9b6f4505953661fa9d077eca.png

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

bbadfa5d42a64d57897fd892bd6f26fb.png

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

if (add>num[i]){

    index =i;

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

    break;

}else {

    index=i;

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

6fe0d9e772ea4306a58a9ed3a189eb43.png

二维数组

冒泡排序

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

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

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

例如:

降序,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 (nums[j]>nums[i]){

                   int a=nums[i];

                   nums[i]=nums[j];

                   nums[j]=a;

               }

            }

        }//遍历出结果

        for (int num:nums){

            System.out.println(num);

        }

    }

}

5eef0fcb248841968cc256907c535f2f.png

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

public class Test02 {

    public static void main(String[] args) {

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

        int [] nums=new int[5];

        Scanner input = new Scanner(System.in);

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

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

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

            int add = input.nextInt();

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

            nums[i]=add;

            }

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

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

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

                if (nums[j]>nums[i]){

                    int a=nums[i];

                    nums[i]=nums[j];

                    nums[j]=a;

                }

            }

        }

        for (int num:nums){

            System.out.println(num);

        }

    }

}

deb068430a8641dfbafc9129d04c701a.png

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

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

 

 

 

 

 

 


http://www.ppmy.cn/ops/3733.html

相关文章

3小时前端入门教程(HTML,CSS,JS)笔记

目录: 前言&#xff1a; HTML标签&#xff1a; HTML属性&#xff1a; 块元素(block)&#xff1a; 行内元素(inline)&#xff1a; CSS 简介&#xff1a; CSS 语法 &#xff1a; CSS 三种导入方式&#xff1a; 选择器&#xff1a; 盒子模型 传统网页布局方式 &#…

文献阅读:Viv:在 web 上多尺度可视化高分辨率多重生物成像数据

文献介绍 「文献题目」 Viv: multiscale visualization of high-resolution multiplexed bioimaging data on the web 「研究团队」 Nils Gehlenborg&#xff08;美国哈佛医学院&#xff09; 「发表时间」 2022-05-11 「发表期刊」 Nature Methods 「影响因子」 47.9 「DOI…

Mac版2024 CleanMyMac X 4.15.2 核心功能详解 cleanmymac这个软件怎么样?cleanmymac到底好不好用?

近些年伴随着苹果生态的蓬勃发展&#xff0c;越来越多的用户开始尝试接触Mac电脑。然而很多人上手Mac后会发现&#xff0c;它的使用逻辑与Windows存在很多不同&#xff0c;而且随着使用时间的增加&#xff0c;一些奇奇怪怪的文件也会占据有限的磁盘空间&#xff0c;进而影响使用…

Servlet测试1

通过按钮提交get,post请求&#xff0c;并且后端响应数据&#xff0c;显示到前端 当点击get按钮时 是发起Get请求 后端接收到Get请求后&#xff0c;把数据写入到body内 当点击pst按钮时 是发起Post请求 后端接收到Post请求后&#xff0c;把数据写入到body内 之后前端就从bod…

ssm062会员管理系统+jsp

会员管理系统 摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于会员管理系统当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了会员管理系统&#xff0c;它彻底改…

Marching Cubes算法

Marching Cubes算法 1. 简介2. 算法原理的理解2.1 如何找到面经过的这些小块(六面体)&#xff1f;2.2 找到后&#xff0c;如何又进一步的找到面与这些小块(六面体)的交点&#xff1b;2.3 这些交点按照怎么的拓扑连接关系连接&#xff0c;是怎么操作的&#xff1f; 3. 总结4. 参…

网络安全(黑客)—2024自学

前言 一、什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防…

【JavaEE多线程】线程中断 interrupt()

系列文章目录 &#x1f308;座右铭&#x1f308;&#xff1a;人的一生这么长、你凭什么用短短的几年去衡量自己的一生&#xff01; &#x1f495;个人主页:清灵白羽 漾情天殇_计算机底层原理,深度解析C,自顶向下看Java-CSDN博客 ❤️相关文章❤️&#xff1a;清灵白羽 漾情天…