数组

百知教育学习 - 胡鑫喆 - 数组

一、数组

  • 概念:一组连续的存储空间,存储多个相同数据类型的值

  • 定义:

    • int[] a; 习惯上用这种
    • int a[];
  • 数组名.length 表示数组名的长度

  • 数组的默认值

    • 整数: 0
    • 小数:0.0
    • 字符:\u0000 (空格)
    • 字符串:null
    • 其他:null
    • boolean:false
    • 对象类型:null
  • 数组创建语法:

    • 先声明、再分配空间:

      数据类型[] 数组名;

      数组名 =new 数据类型[长度];

    • 声明并分配空间:

      数据类型[] 数组名 =new 数据类型[长度];

    • 声明并赋值(繁):

      数据类型[] 数据名=new 数据类型[]{value1,value2,value3,…};

      • int[] a=new int[]{2,1,4,5,7}; //显式初始化

      • int[] a=new int[5]{2,1,4,5,7}; 错误写法 已经显式赋值 不能在括号里再加长度

      • int[] a={2,1,4,5,7}; 对

      • int[] a; a=new int[5]{2,1,4,5,7}; 对 可以分开写

      • int[] a; a={2,1,4,5,7}; 错误 不能分开写

  • 可变长参数:

    public static int add(int…a){ //a就是个整形数组

    ​ }

    注意:参数表中只能有一个可变长参数,而且必须是参数表中最后一个参数

    注意:为了最大限度地提高数组的查询能力(寻址速度),所以把数组的下标从0开始

    正因为数组中要求空间连续,所以数组的长度是固定

    数组的长度固定,所以任何办法都不能改变数组的长度

    • 但是你可以把前一个数组的内容复制到新的数组里

      int[] a={1,2,3,4,5};

      int[] b=new int[a.length*2];

      for(int i=0;i<a.length;i++){

      ​ b[i]=a[i];

      ​ }

二、二维数组

  • 概念:一维数组中的一维数组;数组中的元素,还是数组

  • 在这里插入图片描述

  • 先声明、再分配空间:

    数据类型[][] [] [] 数组名;

    数组名 =new 数据类型[高维长度] [低维长度];

  • 声明并分配空间:

    数据类型[] []数组名 =new 数据类型[高维长度] [低维长度];

  • 声明并赋值(繁):

    数据类型[][] [] [] 数组名 =new 数据类型[高维长度] []; //不规则数组,自行new 低维数组 int [] [] =new int [] [4] 错误

  • 声明并辅助(简):

    数据类型[][] [] 数 你组名 ={{v1,v2,v3},{v4,v5},{v6,v7,v8,v9}}; //显式初始化

三、排序算法

  • 冒泡排序法:核心:两个相邻数值间的比较

    • for(int i=0;i<a.length-1;i++){

      ​ for(int j=0;j<a.length-1-i;j++){

      ​ if(a[j] <a[j+1]){ //升序

      ​ int t=a[j];

      ​ a[j] =a[j+1];

      ​ a[j+1]=t;

      ​ }

      ​ }

      }

  • 选择排序法: 一个数值和其他所有数值的比较

    for(int i=0;i<a.length-1;i++){

    ​ for(int j=i+1;j<a.length;j++){

    ​ if(a[i] >a[j]){ //比较a[i] 与a[j]

    ​ int t=a[i];

    ​ a[i]=a[j];

    ​ a[j]=t;

    ​ }

    ​ }

    }

  • JDK排序:*import java.util. **;

    int [] a={8,5,4,3,7,2};

    Array.sort(a);

  • 二分查找法: 前提:数组中的数据已经经过一次排序

    public static void main(String[] args){

    int [] a={1,3,4,5,7,8,9};

    search(a,3,0,a.lenth-1);

    }

    public static void search(int[] a, int n,int start,int end){

    if(start >end) return -1;

    int middle =(start+end)/2;

    int value=a[middle];

    if(value>n) return search(a,n,start,middle-1);

    else if(value <n) return search(a,n,middle+1,end)

    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值