day08-數組

  1. 按一定顺序排列的同类型数据的集合称为数组。所谓初始化就是给数组元素分配内存,并为每个元素赋初始值。不論静态/动态初始化数组是定长的。

  2. 静态初始化:我们自为每一个数组元素设置初始化值,而数组的长度由系统(JVM)决定.简单写法,必须声明之后,立刻初始化

  3. 动态初始化:我们来设置数组的元素个数(数组长度),而每一个数组元素的初始值有系统决定.

  4. 数组名. length属性
  5. Java5对数组的新语法支持:
    1. 可以用增强for循环-foreach迭代,不關心索引,
    2. 方法的可变参数
  6.  ArrayIndexOutOfBoundsException:数组的索引越界异常.
  7. 获取数组最大最小元素(getMax,getMin),打印数组元素,逆序排列数组元素,元素出现索引(第一次/最后一次)
  8. 方法参数的值传递机制:基本類型-拷貝一個副本,本方法變量不受影響;引用類型-拷貝一個引用地址副本傳遞給方法,操作的是同一個

  1. 楊輝三角
  2. 多維數組
  3. 方法的可变参数:可变参数必须作为方法的最后一个参数,只有一個,其底层是就是一个数组类型。把可變參數,new成數組
  4. System.arraycopy():

  1. 排序:
    1. 冒泡排序(Bubble Sort):
      这是最简单的排序法,基本思路:
      对未排序的各元素从头到尾依次比较相邻的两个元素大小关系,若大于则交换位置,经过第一轮比较排序后可得出最大值,然后使用同样的方法把剩下的元素逐个比较即可。可以看出若有N个元素,那么一共要进行N-1轮比较,第M轮要进行N-M次比较
      public static void testSort( int [] arr)  {
      		int temp=0;
      		for (int times = 1; times <= arr.length-1; times++) {
      			for (int i = 1; i <= arr.length-times; i++) {
      				if (arr[i-1]>arr[i]) {
      					temp=arr[i];
      					arr[i]=arr[i-1];
      					arr[i-1]=temp;
      				}
      			}
      		}
      }
    2. 选择排序(Selection Sort):
      基本思路:选择某个索引位置的元素,然后和后面元素依次比较,若大于则交换位置,经过第一轮比较排序后可得出最小值,然后使用同样的方法把剩下的元素逐个比较即可。
      可以看出选择排序,第一轮会选出最小值,第二轮会选出第二小的值,直到最后。
      第一轮从arr[0]和后面元素相比较,第二轮从arr[1]和后面的元素相比较,依次类推。N个数要进行N-1轮。选择排序每一轮只进行一次交换,相对于冒泡排序效率高一些。
      	public static void testSort( int [] arr)  {
      		int temp=0;
      		for (int times = 1; times < arr.length; times++) {
      			for (int i = times; i <arr.length; i++) {
      				if (arr[times-1]>arr[i]) {
      					temp=arr[times-1];
      					arr[times-1]=arr[i];
      					arr[i]=temp;
      				}
      			}
      		}
      	}
      
  2. 二分搜索法:数组元素必须有顺序.

  1. java.util.Arrays类:
    1. public static int binarySearch(Object[] a,  Object key)  使用二分法查找数组里某元素并返回其索引,若找不到返回负数.
      public static void sort(Object[] a)               使用调优后的快速法对指定数组排序。
      public static String toString(Object[] a)               返回指定数组内容的字符串表示形式。
      public static <T> T[] copyOf(T[] original, int newLength) 复制指定的数组,截取或用 0 填充(如有必要),以使副本具有指定的长度。底層調用System.arraycopy()

猜你喜欢

转载自blog.csdn.net/u013985548/article/details/81417217