数组
- 什么是数组?
- 数组的概念
- 数组有什么特点
- 怎么用
- 相关的算法
数组的概念
- 数组是一个变量,存储相同数据类型的一组数据。
- 作用: 告诉计算机数据类型是什么?
- 格式: 数据类型 数组 名[ ] ;
数据类型[ ] 数组名 ;
- 注意: 声明数组时不规定数组长度。
数组的特点
特点
:- 数据类型相同
- 数组名实际就是一个变量,既然是变量就必须先赋值再使用
- 数组的每一个元素既可以是基本数据类型也可以是引用数据类型
创建数组
- 声明一个变量会在内存中划出一块合适的空间。
- 数组需要在内存中划出一串连续的空间。
- 格式:数据类型[ ] 数组名 ;
数组名 = new 数据类型[大小] ;
eg:
int[] score;
score = new int[5];
初始化
静态初始化
- 初始化的同时为每个元素赋值,不需要指明长度
int[] scores = {100,70,98,67}; //创建数组对象并初始化,存放4个成绩
动态初始化
- 初始化时由系统分配初始值,需要指明数组长度
int[] scores = new int[10];//创建数组对象,存放10个int数据,默认0
赋值
- 数组创建完毕后可以通过下标对每个元素进行赋值
- 下标从0开始
- 数组长度 length,下标最大 length-1
注意事项
- 标识符:数组的名称,用于区分不同的数组。
- 数组元素:向数组中存放的数据。
- 元素下标:对数组元素进行编号,从0开始,数组中的每个元素都可以通过下标来访问。
- 元素类型:数组元素的数据类型。
快速初始化
- 边声明边赋值:
int[] score = {78,15,20,62};
int[] num = new int[] {89,90,74,62};
相关算法
冒泡排序
- 升序排序(从小到大)
1、 比较相邻的元素,如果第一个比第二个大,交换两个元素。
2、 从第一个元素开始重复①的工作,两两比较直到第一轮结束,此时最右边一个数最大。
3、 对序列中的前 n-1 个元素重复 ①② 的工作,此时右边2个数是最大且已排序。
4 、每一轮都会减少一个数字在比较序列中,共比较 n-1 轮。
1 public static void main(String[] args) { 2 int[] arr = { 44, 77, 88, 99, 100, 22 }; 3 arrSort(arr); 4 } 5 public static void arrSort(int[] a) { 6 for (int i = 0; i < a.length; i++) { 7 for (int j = 0; j < a.length - 1; j++) { 8 if (a[j] < a[j + 1]) { 9 int temp = 0; 10 temp = a[j]; 11 a[j] = a[j + 1]; 12 a[j + 1] = temp; 13 } 14 } 15 } 16 System.out.println(Arrays.toString(a)); 17 }
选择排序法
1、在待排序的序列中选出最小的元素,将它与第一个元素交换,待排序元素排除第一个元素;
2、在待排序的序列中选出最小的元素,将它与第二个元素交换,待排序元素排除第二个元素;
3、以此类推,直到待排序的序列中只剩下一个元素;
public static void arrSortp(int[] a) { for (int i = 0; i < a.length - 1; i++) { for (int j = i + 1; j < a.length; j++) { int temp = 0; if (a[i] > a[j]) { temp = a[i]; a[i] = a[j]; a[j] = temp; } } } System.out.println(Arrays.toString(a)); }
二分法
- 当数据量很大适宜采用该方法。采用二分法查找时,数据需是排好序的。
- 基本思想:假设数据是按升序排序的,对于给定值key,从序列的中间位置k开始比较,
1、如果当前位置arr[k]值等于key,则查找成功;
2、若key小于当前位置值arr[k],则在数列的前半段中查找,arr[low,mid-1];
3、若key大于当前位置值arr[k],则在数列的后半段中继续查找arr[mid+1,high],
4、直到找到为止。
1 /** 2 * 二分法 3 * @author Fzxey 4 * 5 */ 6 7 public class Test415_11 { 8 public static void main(String[] args) { 9 int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 10 System.out.println(arrSort(arr, 2)); 11 } 12 13 public static int arrSort(int[] a, int num) { 14 int min = 0; 15 int max = a.length-1; 16 int mid =0; 17 while (a[mid] != num) { 18 mid = (min + max)/2; 19 if (a[mid] > num) { 20 max = mid - 1; 21 } else if (a[mid] < num) { 22 min = mid + 1; 23 } 24 if (min > max) { 25 return -1; 26 } 27 } 28 return mid; 29 } 30 }
以上是几种简单,常见算法。