当前位置: 首页 > news >正文

【韩顺平 零基础30天学会Java】数组、排序和查找(2days)

数组、排序、查找和多维数组
数组可以存放多个同一类型的数据。数组也是一种数据类 型,是引用数据类型
定义一个数组 double[] hens = {3,5,1,3.4,2,50}
遍历数组得到数组所有元素的和 hens[下标],下标是从0开始编号的。
可以通过数组名.lenght得到数组的大小/长度

for(int i=0; i<6;i++){System.out.println("第"+i+"个元素的值=+hens[i]);
}

数组的使用
使用方式1-动态初始化
([]可以写在数据类型的后面,也可以写在数组名的后面)

数据类型[] 数组名 = new 数据类型[大小]

使用方式2-动态初始化
先声明数组 数据类型 数组名[]; OR 数据类型[] 数组名;
创建数组 数组名 = new 数据类型[大小];

使用方式3-静态初始化
初始化数组 数据类型 数组名[] = {元素值,元素值...}
(如果知道数组有多少元素,具体值)

数组注意细节
在这里插入图片描述
在这里插入图片描述
数组赋值机制
在这里插入图片描述
值传递(值拷贝)和引用传递(地址拷贝)的区别
在这里插入图片描述
数组拷贝
在这里插入图片描述
数组翻转
方法一:找规律反转 (将前后的值互换)
方法二:使用逆序赋值方法(创建一个新数组 ,逆序遍历原数组,原始数组指向新数组【=】)

数组扩容
实现动态的给数组添加元素效果,实现对数组扩容
(new新一个新数组,赋值,原始数组指向新数组arr=arrNew)

排序
排序是将多个数据,按照指定顺序进行排列的过程
排列的分类

  1. 内部排序:将所有需要处理的所有数据都加载到内部存储器中进行排序。包括(交换式排序法,选择式排序法和插入式排序法);
  2. 外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。包括(合并排序法和直接合并排序法)。

for(int i=0;i<arr.length-1;i++)for(int j=0;j<arr.length-1-i;j++)		

查找
在java中,常用的查找有两种:顺序查找和二分查找。

多维数组-二维数组
二维数组
从定义形式上来看int[][]。
可以理解成,原来的一维数组的每个元素是一维数组
如果要访问第(i+1)个一维数组的第j+1个值arr[i][j]
二维数组 int [][] arr = {{0,0,0,0,0,0},{0,0,1,0,0,0},......}

//输出二维数组
for(int i = 0; i < arr.length; i++){for(int j = 0; j < arr[i].length; j++){System.out.print(arr[i][j]+"\t");}System.out.println();
}

二维数组的使用
使用方式1
语法 类型[][] 数组名=new 类型[大小][大小]
二维数组在内存中的存在形式
在这里插入图片描述
使用方式2:动态初始化
先声明,再定义,后赋值。

使用方式3:动态初始化-列数不确定

int[][] arr = new int[3][]; //创建二维数组,一个有3个一维数组,但是每个一维数组还没有开辟数据空间
for(int i=0;i<arr.length;i++){arr[i] = new int[i+1];//遍历一维数组,并给一维数组的每个元素赋值for(int j=0;j<arr[i].length;j++){arr[i][j] = i+1;}
}

使用方式4:静态初始化
定义 类型 数组名[][] = {{值1,值2...},{值1,值2...},{值1,值2...}}

杨辉三角~ yanghui[i][j] = yanghui[i-1][j]+yanghui[i-1][j-1]

二维数组注意细节
二维数组声明方式有:int[][] y or int[] y[] or int y[][]
二维数组实际上是由多个一维数组组成的,它的各个一维数组的长度可以相同,也可以不同。

String strs[] = new String[]{"a","b","c"}; //ok

写代码的时候要考虑边界条件哦(例如查找的时候查找不到怎么办)
生成1-100的随机整数:(int)(Math.random() * 100) + 1

http://www.lryc.cn/news/141450.html

相关文章:

  • VUE笔记(一)初识vue
  • 3D点云处理:学习总结(更新整理中)
  • Day45|leetcode 70. 爬楼梯、322. 零钱兑换、279.完全平方数
  • arm:day9
  • 【大模型AIGC系列课程 1-2】创建并部署自己的ChatGPT机器人
  • 启动metastore服务报错
  • c 语言 算法 技巧 之 用移位来代替乘除
  • python爬虫实战零基础(3)——某云音乐
  • 渗透测试漏洞原理之---【XSS 跨站脚本攻击】
  • 【浮点数二分】
  • 基于FPGA的FIR低通滤波器实现(附工程源码),matlab+vivado19.2+simulation
  • c++ qt--事件(第六部分)
  • 嵌入式系统入门实战:探索基本概念和应用领域
  • 关于hive sql进行调优的理解
  • 十大排序算法
  • PIP 常用操作汇总
  • 线性代数的本质笔记(3B1B课程)
  • 快速掌握MQ消息中间件rabbitmq
  • Git push拦截
  • 拼多多anti-token分析
  • 基于微信小程序的中医体质辨识文体活动的设计与实现(Java+spring boot+MySQL)
  • 4.16 TCP 协议有什么缺陷?
  • VMware 修改ip地址 虚拟机静态ip设置 centos动态ip修改为静态ip地址 centos静态ip地址 vmware修改ip地址
  • Deepin添加Ubuntu源
  • Mysql的多表查询和索引
  • Java设计模式之建造者模式
  • H5商城公众号商城系统源码 积分兑换商城系统独立后台
  • 华为OD机试 - 完全数计算(Java 2023 B卷 100分)
  • 每日一学——Vlan配置
  • Pimpl模式