Java-数组,冒泡排序

数组是一中引用数据类型,同一个数组中的元素需要时同一个数据类型,例如,如果有一个是int类型,数组中的所有变量都要是int类型 eg:【1,2,3,6,8,7,9】

数组的特点:

1.里面的元素按照线性排列,可以通过下标编号来访问数组中的每个元素

2.当一个数组被初始化之后,数组的大小便定了下来,即数组的长度不可再变

3.数组不仅可以存基本数据类型的数据,还可以存引用数据类型的数据,例如二维数组,只要里面 的数据类型相同就行

数组初始化的方式;

1.静态初始化:数组名称=new 数据类型[]{元素1,元素2,元素3......} eg:

arr1=new int[]{1,5,78,36,45,45,12}

还可以在声明时就初始化,eg;

int[] arr1={1,3,5,9,78,64,25,36,19}

2.动态初始化;数组名称=new 数据类型[数组长度] eg;

arr1=new int[5]

当动态初始化后未给数组传值,便会有默认值,根据数据类型的不同,默认值也不同;

访问数组时下标从0开始,所以最后一个数据的下表应该为arr1.length-1,我们通常使用遍历数组的方式来查看数组中的元素,遍历数组的常见方法有两种,for和foreach

for时通过下表来把数组每个都过一遍,foreach是通过把array里面的值一个一个赋值给variableName来把其全部过一遍,二者皆可用,可根据需求来选择

数组常用的方法;

 toString输出数组中的元素

equals 比较两个数组的长度以及对应位置上面的数值是否全部相等

sort 当数组中为数字时,会将数组中的数据进行从小到大的排序

copyof 顾名思义,它的功能是复制,将原数组中的元素全部复制到新的数组中,其中的两个参              数,array是原来的数组,newLength是新数组的长度,当新数组的长度比原来数组的长                  度 长时,多出来的未进行传值的位置会自动用默认值填充,当新数组的长度小于原数组的              长度时,优先从前往后复制,后面的数据将丢失,在进行数组扩容时经常使用到

内存中的数组;

当我们对int变量赋值时,x=1,y=x,那么y的值就等于1,我们再进行操作时;x=1,y=x,x=2,此时我们发现y的值还是1,那么数组是否是这样的呢,答案是否定的,

 例如数组arr1,当我们创建arr1时,便获得一个空间地址0x11,当初始化它时,又会创建一个空间地址,此时0x11便指向了这个地址,当arr2=arr1之后,arr2的空间地址便和arr1的一样,此时他们共同指向同一个地址,此时,我们无论对这两个数组之中的哪一个数组进行操作,他们指向的地址中的元素都会发生变化,也就是他们之中的值都会变化,如运行以下代码,

arr2[1]=66

 则地址中的元素便成为了[10,66,30,40,50],我们发现arr1[1]的值也变成了66

多维数组;

 二维数组的声明和一维数组的差不多,注意动态初始化的时候,在两个[]内要分别写上外层数组的元素个数,内层数组的元素个数,本质上还是一维数组,只是里面的基本数据类型变成了数组

冒泡排序;

数组中的一个经典业务问题,冒泡排序

我们知道,通过sort方法可以将数据从小到大排列,那么从大到小排列要怎么做呢,冒泡排序为我们提供了一种解决问题的思路;

每一轮让相邻的数据两两相比,大的数移到后面,以此类推,逻辑

 public static void main(String[] args) {
          int[] arr={16,8,2,7,5,3,4,65,18,42,59,61,28,37}
          int temp=o;
          for(i=0,i<arr.length-1,i++){
              for(j=0,j<arr.length-i-1,j++){
                   
                  if(arr[j]>arr[j+1]){
                      temp=arr[j];
                     arr[j]=arr[j+1];
                      arr[j+1]=temp
                      
                      
                  }
              }
          }

代码如下

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值