首页 > 其他分享 >数组进阶

数组进阶

时间:2023-09-22 12:34:29浏览次数:33  
标签:进阶 打印 length 数组 二维 一维 排序

多维数组

二维数组

//基本构架
int a[][]=new int[2][5]
    //可以看成一个两行三列的数组

其中每一个元素都是一维数组

还是很好理解的

二维数组如果我们只用一维的输出方法输出,只能输出一个数组,但我们知道数组被输出的只有地址,我们必须输出数组中的一个值才能有结果,所以这样是不行的,一定要精确到一个具体的数字

但我们可以通过之前的打印代码来查看这个数组的第二维

当然我们也可以使用打印二维数组的代码打印一整个数组

我们查看数组长度也是同理,我们用array.length只能查看一维的长度,我们要用array[第一维位置].length来查看某一维下二维数组的长度

数组应用

Arrays类(关于数组的工具类)

1.打印数组Arrays.toString(),只能打印一维数组

2.排序数组升序,Arrays.sort()

  1. 对数组赋值,fill

    第二幅图是让数组数值为2和数值为4之间的数值被0填充

  2. 比较equal

  3. 查找,binarySearch

利用JDK帮助文档查找

冒泡排序

比较数组中两个相邻的元素,如果第一个数比第二个数大,我们就交换他们的位置,每一比较都会产生一个最大或最小的数字,下一轮则可以少一次排序,依次循环直到结束

交换两个数,通常要利用到第三个变量

像水杯倒水一样,利用第三个杯子将两杯的水进行互换

冒泡排序每轮都会产生一个最大或最小的数字,五个数中我们只要判断四次最大,最后一个数自然是最小,所以循环a.length-1次

对于j<a.length-1-i主要是因为取出一个最大值后只剩四个数需要判断,判断次数就变少了,i只是充当一个递减的数而已,刚好能用,当然我们也可以不-i,但-i可以让程序运行更快

改变判断符号就可以改变排序方向

时间复杂度O(n2)

利用flag标识符优化循环

利用flag标签,如果上一轮没有排序,说明排序已经完毕,不需要接着排,可以省去一些不必要的步骤,是一种优化思路

标签:进阶,打印,length,数组,二维,一维,排序
From: https://www.cnblogs.com/javafirstlearn/p/17722040.html

相关文章

  • J2ME数组的复制及连接操作
    publicclassArrays{/***构造函数私有,这样可以保证只能通过:类名.静态方法或类名.静态方法来访问内部数据,*而不可以通过创建本类的对象来进行访问*/privateArrays(){}/***复制一个跟源byte数组一样的byte数组*@paramrSou......
  • Array 数组的几种方法
    1.arr.keys()返回数组的键名2.arr.values()返回数组的值3.arr.entries()返回数组的键和值4.arr.reduce() 接受两个参数:一个是对数组每个元素执行的回调方法,一个是初始值letsum=arr.reduce(function(prev,cur,index,array){returnprev+cur},0)console.l......
  • 笔试_0001(数组A内无重复,如A=[a,b,c])
      publicstaticvoidmain(String[]args){//question1();//question2();System.out.println(~1+1);}privatestaticvoidquestion1(){/*思路,规律:利用字符串的包含和替换。*/......
  • 默认选中数组最多的tab
    初次默认选中数组最多的tabinitTab:true,tabs:[],activeTab:0,if(this.initTab){letmaxUnread=-1;letactiveTabIndex=-1;for(leti=0;i<this.tabs.length;i++){if(this.tabs[i].unread>maxUnread){ maxUnread=this.tabs[i].unread; ......
  • JAVA基础学习——面型对象进阶
    1static2继承   1static1.1内存图静态对象是随着类加载,非静态对象随着对象来的: 引用类型初始化时null值。 1.2static静态变量、静态方法 1.3总结  ①静态方法中没有this,非静态方法中有静态的一般用于共享,不面向某一个对象,所以没有this;而非......
  • 深入浅出程序设计竞赛(进阶篇)VO.7 进阶数据结构
    第五章二叉堆P2168[NOI2015]荷马史诗哈夫曼树P2827[NOIP2016提高组]蚯蚓找最长的蚯蚓只需要直到相对大小,其余蚯蚓长度\(+q\)等价于新产生的两条蚯蚓长度\(-q\)新产生的第一/二条蚯蚓长度分别单调,可以用队列代替堆时间复杂度\(O(n\logn+m)\)P1801黑匣子对顶堆......
  • 数组反转以及二位数组
    数组反转就是新生成一个数组,来反向接受原数组位置的数据publicstaticint[]reverse(int[]array){int[]reverse=newint[]array.length;for(inti=0,j=array.lenhth;i<array.length;i++,j--){ reverse[j]=array[i];}returnreverse;}假如遍历数组并输出的函数pri......
  • Leetcode刷题448.找到所有数组中消失的数字
    给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1,n] 内。请你找出所有在 [1,n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。 示例1:输入:nums=[4,3,2,7,8,2,3,1]输出:[5,6]示例2:输入:nums=[1,1]输出:[2] 提示:n==nums.lengt......
  • 数组
    感觉不太好记定义有两种int[]a={1,2,3,4,5,6,7}//这种是静态初始化int[]a=newint[10]//这种是动态初始化动态初始化感觉赋值有点费劲a[0]=1;//或者用for循环来赋值还有实现一个简单的四则运算计算器,主要用了switch语句和scanner代码如下;就是很简单的那种四则运算的......
  • 数组初学习
    数组创建数组是相同类型的有序组合//创建命令int[]nums=newint[个数]下图为实践计算数组中所有数的和三种初始化和内存分析数组被声明时会存在栈中,真正创建时数组才会存在堆中,我们无法调用超过数组最大下标的数组,会报错java.lang.ArrayIndexOutOfBoundsException意思是......