JavaSE 学习笔记 - 04 数组

Java学习过程中的一些记录和总结,比较零散和主观,如有理解错误烦请指正,谢谢

  • 数组 - 存放同一类型的一组数据
    • 创建格式(int类型为例)
      • 1. int[] nums = new int[3];(3为数组初始化时的长度)
      • 2. int[] nums = {1,2,3};
      • 3. int[] nums;(不常用)
      • 4. int[] nums = new int[]{1,2,3};(不常用)
    • 常见问题
      • 数组下标越界 - 字面意思
      • 空指针 - 数组未存入值(e.g. int[] nums = null;),就调用其中数据(e.g. nums[1])
  • 常用算法 - 1. 求数组中的最大/最小值;2. 冒泡排序;3. 二分查找
    • 找最值(O(n))
      • 原理:for循环。指针从0开始右移,每次比较指针元素和指针右边元素的大小,将符合条件(较大或较小)的元素进行存储,之后将指针右移,遍历完一边数组即可得到最值
    • 冒泡排序(O(n^2)) - 用于排序;效率很低
      • 原理:两层for玄循环嵌套。外层控制遍历轮数,内层控制单次遍历。单次遍历过程类似找最值,只是将存储元素操作更换为交换两个元素的操作;每遍历一次可将当前数组的最大元素移至右边,之后数组长度减1,再重复,直到数组长度为1时,外层循环终止
    • 二分查找(O(lgn))- 用于查找目标元素;且应用的数组必须为有序数组(升序或降序)
      • 原理:双指针,while循环。指针分别位于数组的头尾,以确定数组的范围;确定范围后得到该范围的中间元素,将中间元素和目标元素进行比较,若大于目标元素,则将尾部指针放到中间元素左侧;若小于目标元素,则将头部指针放到中间元素的右侧。当头部指针跑到尾部指针右侧时,循环结束
  • 多维数组 - 数组里面存数组
    • 创建格式:int[][] = new int[3][];
      • 该格式中,int[] 为一种数据类型(如 int i; 中 int 是一种数据类型)
      • 多维数组创建时的初始化,一般只要求声明最外层数组的长度;内部存储的数组长度可以不相同
      • 多维数组应用较多的一般为二维数组,更高维的由于理解起来较为复杂而不常用

你可能感兴趣的:(c语言,算法)