数组
2017 - 11 - 09
什么是数组?
—— 容器 : 存储长度确的相同类型数据。
==》
概念: 在内存中开辟的一个长度确定空间,按照下角标储存相同数据类型的元素。
==》
声明方式:
— 动态声明:
【】 数据类型 [ ] 数组名 = new 数据类型 [ 数组长度] ;
int [] arr = new int [4];
— 静态声明:
【】 数据类型 [ ] 数组名 = new 数据类型 [ ] {元素 1 ,元素2 ,…} ;
int [] arr01 = new int [] {1,4,5,2,8,4,3};
— 简便声明 :
【】 数据类型 [ ] 数组名 = {元素 1 ,元素2 ,…};
int [] arr01 = {1,4,5,2,8,4,3};
备注:
1 、new 关键字: 数组声明中,表示在内存中开辟一块空间。
2、数组长度一旦声明不可改变。
3 、数组只能存放同类型数据。
数组常见异常:
ArrayIndexOutOfBoundsException 越界异常
数组常见的方法
一 、遍历 : 即按照下角标访问数组内所有元素。
例:使用 for 循环遍历
public static void print(int [] arr) {
System.out.print("【 ");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + ", ");
if (i == arr.length - 1) {
System.out.println( arr[i] + " 】");
}
}
System.out.println();
}
二 、 冒泡排序
原理:(升序为例)
—— 相邻两个元素比较,较大者居后,依次类推,可得最大值排最末;
——重复上述操作,直到剩下第一位。
//冒泡排序
public static void popSort(int [] arr) {
// 外层控制比较轮数
for (int i = 0; i < arr.length; i++) {
//内层控制每轮比较次数
for (int j = 0; j < arr.length -1; j++) {
// 判断是否交换位置
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp ;
}
}
}
}
三、选择排序
原理: (升序为例)
第一位元素和后面所有元素比较,取最小值放第一位,
第二位元素和后面所有元素比较,也取最小值放第二位,
依次类推。
public static void xSort(int [] arr) {
//控制最小值取多少轮
for (int i = 0; i < arr.length - 1; i++) {
//控制每轮比较次数
for (int j = i + 1; j < arr.length; j++) {
// 换位条件
if (arr[i]> arr[j]) {
//temp : 临时变量
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp ;
}
}
}
}
获得最值
例: 获得最大值
思路:
— 假定第一位为最大值
— 最大值依次与其他元素比较 ,如果较小,则其他元素值赋予最大值。
public static int getMax(int [] arr) {
int max = arr[0];
for (int i = 0; i < arr.length; i++) {
if (max < arr[i]) {
max = arr[i];
}
}
return max ;
}