零基础Java第九期:一维数组(二)和二维数组

news2024/11/26 11:06:40

目录

一、数组的练习

1.1. 顺序表查找

1.2. 二分查找

1.3. 冒泡排序

二、二维数组

2.1. 二维数组的性质

2.2. 不规则二维数组


一、数组的练习

1.1. 顺序表查找

     题目描述:给定一个数组, 再给定一个元素, 找出该元素在数组中的位置。

    利用for循环去遍历数组,找到之后返回下标,没有找到返回-1,代码如下:

public class Main {
    public static int Find(int[] arrays,int num){
        for(int i=0;i< arrays.length;i++){
            if(arrays[i]==num){
                return i;
            }
        }
        return -1;
    }

    public static void main(String[] args) {
        int[] arrays={8,7,4,10,25,16,2};
        System.out.println(Find(arrays,25));//调用Find方法,传入数组arrays和要查找的元素25
    }
}

1.2. 二分查找

      二分查找需要建立在一个有序的情况下,数学上我们学过二分法找零点,这个思路相信不用多说。如果这个数组是以升序排列的,元素分别是10,20,30,40,50,代码如下:

public class BinarySearch {
    public static int FindVal(int arrays[],int val){
        int left = 0;
        int right = arrays.length;
        while(left<=right){
            int mid = (left + right) / 2;
            if(val<arrays[mid]){
                //去左侧区间查找
                right = mid-1;
            }else if(val<arrays[mid]){
                //去右侧区间查找
                left = mid + 1;
            }else{
                //相等,说明找到了
                return mid;
            }
        }
        return -1;
    }

    public static void main(String[] args) {
        int[] arrays = {10,20,30,40,50,60};
        System.out.println(FindVal(arrays,4));
    }
}

1.3. 冒泡排序

      第一个for循环表示循环的趟数,假设数组里面共有n个元素,那么最多需要循环n-1趟;第二个for循环我要用画图的方式来描述:每比较完一个元素的次数会依次减小,怎么来体现这个减少呢?我们在j=arrays.length-1后面再减去一个i就能实现。

import java.util.Arrays;

public class Main {
    public static void BubbleSort(int[] arrays){
        for(int i=0;i< arrays.length-1;i++){
            for(int j=0;j< arrays.length-1-i;j++){
                if(arrays[j]<arrays[j+1]){
                    int tmp=arrays[j];
                    arrays[j]=arrays[j+1];
                    arrays[j+1]=tmp;
                }
            }
        }
    }

    public static void main(String[] args) {
        int[] arrays={20,64,73,5,108,84};
        System.out.println("排序前:"+ Arrays.toString(arrays));
        BubbleSort(arrays);
        System.out.println("排序后:"+Arrays.toString(arrays));
        int ret=Arrays.binarySearch(arrays,5);
        System.out.println(ret);
    }
}

二、二维数组

2.1. 二维数组的性质

 二维数组与一维数组的本质是一样的。命名规则有三种:

int[][] array1 = {{1,2,3},{4,5,6}};
int[][] array2 = new int[][]{{1,2,3},{4,5,6}};
int[][] array3 = new int[2][3];//前行后列

       与C语言中唯一不同的是,Java中的二维数组可以省略列,但不能省略行(可以实现为不规则二维数组,后面会讲)。二维数组的存储是怎样的?如下图所示,0下标与1下标存的就是两个一维数组的地址。

int[][] array = {{1,2,3},{4,5,6}};
System.out.println(array[0]);
System.out.println(array[1]);

遍历数组打印: 

System.out.println(Arrays.toString(array[0]));
System.out.println(Arrays.toString(array[1]));

数组的长度

System.out.println(array[0].length);
System.out.println(array[1].length);

 

如何确定二维数组的行数与列数呢?代码如下:

int[][] array={{1,2,3},{4,5,6}};
System.out.println(array.length);//确定行数
System.out.println(array[0].length);//确定列数

2.2. 不规则二维数组

       前面在二维数组的性质中提到过不规则二维数组, 下面是一个不规则二维数组的例子,运行,会出现如下报错:

int[][] array3 = new int[2][];
        for (int i = 0; i < array3.length; i++) {
            for (int j = 0; j < array3[i].length; j++) {
                System.out.println(array3[i][j]);
            }

       如果我们进行调试的话,可以看到,列数里面的默认值是null,null不能通过.length去访问,所以就会报错。如下图所示:

 

但如果我们这样做呢: 

int[][] array4=new int[2][];
array4[0] =new int[]{1,2,3,4};
array4[1] =new int[]{5,6,7};
for (int i = 0; i < array4.length; i++) {
   for (int j = 0; j < array4[i].length; j++) {
        System.out.println(array4[i][j]);
     }
}

 

 

好,以上就是二维数组的全部内容。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2222947.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

听一听语音助手的声音

分享自制树莓派语音助手的博文也有一些日子了&#xff0c;今天咱们来听听语音助手自己的声音。 上图是本次对话的log记录&#xff0c;从图上可以看到&#xff0c;主要的对话耗时是用于录音&#xff08;默认5秒&#xff09;和语音识别&#xff08;平均5秒&#xff09;这两个组件…

【数据结构】包装类简单认识泛型-Java

包装类 在Java中&#xff0c;由于基本类型不是继承自Object&#xff0c;为了在泛型代码中可以支持基本类型&#xff0c;Java给每个基本类型都给了一个包装类型 基本数据类型和对应的包装类 基本数据类型包装类ByteByteshortShortint Integer longLongfloatFloatdoubleDoublec…

洞察前沿趋势!2024深圳国际金融科技大赛——西丽湖金融科技大学生挑战赛技术公开课指南

在当前信息技术与“互联网”深度融合的背景下&#xff0c;金融行业的转型升级是热门话题&#xff0c;创新与发展成为金融科技主旋律。随着区块链技术、人工智能技术、5G通信技术、大数据技术等前沿科技的飞速发展&#xff0c;它们与金融领域的深度融合&#xff0c;正引领着新型…

模型的部署:服务端与客户端建立连接(Flask)

目录 一、服务端部署&#xff08;使用Flask&#xff09; 1.安装Flask 2.加载模型&#xff08;这里以识别图片的类型模型为例&#xff09; 3.定义API端点 4.运行Flask应用 二、客户端请求 1.安装HTTP客户端库 2.发送请求 请求成功示例&#xff1a; 监控与日志 总结 在…

物联网消息队列Emqx日志配置及日志追踪以及Centos7上的rc.local开机不执行、git提交的小问题

一、物联网消息队列Emqx日志配置及日志追踪 EMQX支持将日志输出到控制台或者日志文件&#xff0c;或者同时使用两者。使用 Docker 部署 EMQX&#xff0c;默认只能通过 docker logs 命令查看 EMQX 日志。EMQX 的默认日志级别为 warning&#xff0c;默认在单日志文件超过10MB(log…

nginx 隐藏版本号与WEB服务器信息

nginx 隐藏版本号与WEB服务器信息 1.安装相关软件2.下载软件包解压并进入3.修改C文件4.编译配置./configure --prefix/usr/local/nginx5.编译安装make && make install5.1.错误处理15.2.错误处理25.2.编译安装make && make install 6.修改nginx配置文件,http节…

【Vue】Vue3.0(十四)接口,泛型和自定义类型的概念及使用

上篇文章&#xff1a; 【Vue】Vue3.0&#xff08;十三&#xff09;中标签属性ref&#xff08;加在普通标签上、加在组件标签上&#xff09;、局部样式 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Vue专栏&#xff1a;点击&#xff01; ⏰️创作时间&…

从0开始深度学习(20)——延后初始化和自定义层

一般情况下&#xff0c;模型参数在被创建时就被立即初始化了&#xff0c;但如果使用了延后初始化技术&#xff0c;就能在首次传入数据后&#xff0c;再初始化参数&#xff0c;旨在输入维度未知的情况下&#xff0c;预定义灵活的模型&#xff0c;动态推断各个层的参数大小。 有时…

robosense 激光雷达安装

官方github 1、ROBOSENSE 驱动安装并运行 1、改雷达型号 2、修改网口地址 3、改变点的类型 https://github.com/RoboSense-LiDAR/rslidar_sdk/blob/main/doc/howto/05_how_to_change_point_type.md 2、ROBOSENSE 点云转换成 velodyne git clone https://github.com/HVikto…

Linux 部署 Harbor 镜像仓库详解

文章目录 安装 Docker安装 Harbor访问 Harbor 安装 Docker 本次部署流程使用的是1台阿里云ECS&#xff1a; Ubuntu 22.04&#xff0c;2核4G开放 9999 端口号 首先需要做的是在当前服务器上&#xff0c;安装好 Docker&#xff0c;参考链接如下&#xff1a; https://blog.csdn.n…

算法(四)前缀和

前缀和也是一个重要的算法&#xff0c;一般用来快速求静态数组的某一连续区间内所有数的和&#xff0c;效率很高&#xff0c;但不支持修改操作。分为一维前缀和、二维前缀和。 重要的前言&#xff01; 不要死记模板&#xff0c;具体题目可能是前缀和、前缀乘积、后缀和、后缀乘…

qt 构建、执行qmake、运行、重新构建、清除

qt右键功能有 构建、执行qmake、运行、重新构建、清除&#xff0c;下面简单介绍一下各个模块的作用。 1. 执行qmake qmake是一个工具&#xff0c; 它根据pro文件生成makefile文件&#xff0c;而makefile文件中则定义编译与连接的规则。pro文件中定义了头文件&#xff0c;源文件…

【C++干货篇】——C/C++内存管理

【C干货篇】——C/C内存管理 文章目录 【C干货篇】——C/C内存管理1.C/C内存分布1.1静态区/数据段&#xff1a;1.2常量区/代码段&#xff1a;1.3栈&#xff1a;1.4堆&#xff1a;1.5. 内存映射区&#xff1a; 2.C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free…

[笔记] 关于CreateProcessWithLogonW函数创建进程

函数介绍 https://learn.microsoft.com/zh-cn/windows/win32/api/winbase/nf-winbase-createprocesswithlogonw BOOL CreateProcessWithLogonW([in] LPCWSTR lpUsername,[in, optional] LPCWSTR lpDomain,[in] …

【lca,树上差分】P3128 [USACO15DEC] Max Flow P

题意 给定大小为 n ( 2 ≤ n ≤ 5 1 0 4 ) n(2 \leq n \leq 5 \times 10^4) n(2≤n≤5104) 的树&#xff0c;并给定 m ( 1 ≤ m ≤ 1 0 5 ) m(1 \leq m \leq 10^5) m(1≤m≤105) 条树上的路径&#xff08;给定两个端点&#xff0c;容易证明两个点树上路径唯一&#xff09;&…

分布式-单元化架构1

一 两地三中心 1.1 两地三中心* 两地指的是两个城市&#xff1a;同城&#xff0c;异地。三中心指的是三个数据中心&#xff1a;生产中心、同城容灾中心、异地容灾中心。 在同一个城市或者临近的城市建设两个相同的系统&#xff0c;双中心具备相当的业务处理能力&#xff0c;…

【MySQL】索引的机制、使用

在学习索引知识之前&#xff0c;我们可以先了解一下什么是索引。实际上&#xff0c;索引就是数据库中一个或多个列存储的结构&#xff0c;能够支持数据库管理系统在不扫描整张表的情况下也能查询到数据行&#xff0c;能够大大提升查询效率。举个例子&#xff0c;我们想要找到一…

技术成神之路:设计模式(二十二)命令模式

相关文章&#xff1a;技术成神之路&#xff1a;二十三种设计模式(导航页) 介绍 命令模式&#xff08;Command Pattern&#xff09;是一种行为设计模式&#xff0c;允许将请求&#xff08;命令&#xff09;封装为对象&#xff0c;从而使您可以使用不同的请求、队列或记录请求日…

硬件基础知识补全计划【一】电阻

一、电阻理论 1.1 电流定义 电流&#xff1a;电流的强弱用电流强度来描述&#xff0c;电流强度是单位时间内通过导体某一横截面的电荷量&#xff0c;简称电流&#xff0c;用I表示。1 秒内有 6.241509310^18 个元电荷通过横截面的电流&#xff0c;定义为 1 安 (A)。 电压&…

【C++】在Windows中使用Boost库——实现TCP、UDP通信

目录 一、编译Boost库 二、TCP服务端 三、TCP客户端 四、UDP连接 一、编译Boost库 1. 先去官网下载Boost库源码 2. 点击下载最新的版本 下载Windows环境的压缩包&#xff0c;然后解压 3. 在解压后的目录路径下找到“bootstrap.bat” 打开控制台&#xff0c;在“bootstrap.…