第三章 数组

一. 数组的概述
  1. 定义:数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。
  2. 常见概念:数组名、下标(索引)、元素、数组的长度
  3. 数组的特点
  • 数组本身属于引用数据类型的变量。数组内的元素可以任何数据类型,包括基本数据类型和引用数据类型
  • 创建数组对象会在内存中开辟一整块连续的空间
  • 数组的长度一旦确定,就不能修改
      4.  数组的分类
  • 按照维度:一位数组、二维数组...
  • 按照数组元素的类型:基本数据类型元素的数组、引用数据类型的数组(对象数组)
 
二. 一维数组的使用
  1. 声明方式: type var[ ]   或   type[ ] var      注:声明数组时不能指定其长度
  2. 初始化
  • 静态初始化:数组的初始化和数组元素的赋值操作同时进行  e.g. int[ ] ids = new int[ ]{1, 2, 3}    简写 int[ ] ids = {1, 2, 3}
  • 动态初始化:数组的初始化和组数元素的赋值操作分开进行  e.g. String[ ] names = new String[5]
  • 数组一旦初始化完成,其长度就确定了
      3. 数组元素的引用:数组名[数组元素下标]
            注:数组的角标从0开始,到数组的长度-1结束
      4. 数组的长度:通过其属性length来获取  e.g.  ids.length  names.length
      5. 数组元素的默认初始化值
  • 元素是整型( int、short、byte、long ):0
  • 元素是浮点型( float、double ):0.0
  • 元素是char型:0 或 ‘\u0000'
  • 元素是boolean型:false
  • 元素是引用数据类型:null
      6. 一位数组的内存解析
              
 
 
三. 二维数组的使用
  1. 声明方式: type var[][]  或  type[][] var  或  type[] var[]
  2. 初始化
  • 静态初始化:int[][] arr = new int[][]{ {1,2,3},{4,5},{6,7,8} }                      
         int[] arr[] = new int[][]{ {1,2,3},{4,5},{6,7,8} }
         int[] arr[] = { {1,2,3},{4,5},{6,7,8} }      :只有静态初始化可以省略new
 
  • 动态初始化:int[][] arr = new int[3][2]  或 
    •  int[][] arr = new int[3][];arr[0] = new int[2]
  •   
      3. 数组元素的引用:arr[][]
      4. 数组的长度:arr.length   arr[0].length
      5. 遍历二维数组:
            for( int i = 0 ; i < arr.length ; i++ ) {
                    for ( int j = 0 ; j < arr[ i ].length ; j++ ) {
                    }
            }
      6. 数组元素的默认初始化值
        说明:二维数组分为外层数组的元素和内层数组的元素 
                 外层元素:arr[0], arr[1]
                 内层元素:arr[0][0], arr[1][2]
  • 针对于动态初始化方法一:int[][] arr = new int[3][2]
                    外层元素的初始值为:地址值
                    内层元素的初始值为:与一位数组初始化情况相同
  • 针对于动态初始化方法二:int[][] arr = new int[3][]
                    外层元素的初始值为:null
                    内层元素的初始值为:不能调用,否则报错
 
四. 排序算法
  • 各种内部排序方法性能比较
  1. 从平均时间而言:快速排序最佳。但在最坏情况下时间性能不如堆排序和归并排序。
  2. 从算法简单性看:由于直接选择排序、直接插入排序和冒泡排序的算法比较简单,将其认为是简单算法。对于Shell排序、堆排序、快速排序和归并排序算法,其算法比较复杂,认为是复杂排序。
  3. 从稳定性看:直接插入排序、冒泡排序和归并排序时稳定的;而直接选择排序、快速排序、 Shell排序和堆排序是不稳定排序
  4. 从待排序的记录数n的大小看,n较小时,宜采用简单排序;而n较大时宜采用改进排序
 
  • 排序算法的选择
  1. 若n较小(如n≤50),可采用直接插入或直接选择排序。当记录规模较小时,直接插入排序较好;否则因为直接选择移动的记录数少于直接插入,应选直接选择排序为宜。
  2. 若文件初始状态基本有序(指正序),则应选用直接插入、冒泡或随机的快速排序为宜;
  3. 若n较大,则应采用时间复杂度为O(nlgn)的排序方法:快速排序、堆排序或归并排序。
 
五. Arrays工具类的使用  
     
     
posted @ 2021-07-09 15:38  deeojunkie  阅读(56)  评论(0编辑  收藏  举报