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

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

目录

一、数组的练习

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.mrgr.cn/news/57952.html

相关文章:

  • 优先算法——移动零(双指针)
  • 【iOS】UICollectionView的使用方法
  • 【WRF工具】服务器上安装convert_geotiff
  • 生命与自由,抑郁的来源
  • 【T+】畅捷通T+软件更新补丁提示当前系统中没有安装T+产品
  • 字符串及正则表达式
  • Java题集练习3
  • 一文带你入门Flink CDC
  • 十、Linux 故障排除专业案例分享
  • java抽象类和接口
  • 【Fargo】14: sockaddr_in 、 sockaddr 、sockaddr_storage 区别及转换
  • 论文思路 标书 水文
  • css知识点梳理
  • Zypher Network Layer3 主网上线,“宝藏方舟”活动是亮点
  • 深度学习_循环神经网络_预测平安中国股价(文末附带数据集下载链接, 长期有效, 如果有大佬愿意帮忙, 我先在这磕一个,感谢)
  • Vue弹窗用也可以直接调用Js方法了
  • 博饼代码【Python】
  • V4L2驱动框架
  • Unreal Engine5安装Niagara UI Renderer插件
  • phpstorm中使用FTP功能和自动上传配置介绍
  • 部署前后端分离若依项目--CentOS7Docker版
  • 数字隔离器市场崛起,老牌射频芯片企业“HOPERF”迎风启航
  • Android 两种方式实现类似水波扩散效果
  • Shell编程-小结
  • Python os模块详解
  • RabbitMQ常见问题持续汇总