1、声明: 数组元素类型 数组名[] int arr[];
数组元素类型[] 数组名 String[] arg;
2、分配内存空间:数组名称 = new 数组元素类型[数组元素的个数]; arr = new int[5];
3、初始化:int arr[] = new int[]{1,2,3,4,5};
int arr2[] = {1,2,3,4,5};
4、数组的基本操作
(1)遍历数组:for循环、foreach语句
(2)替换数组元素:Arrays类的静态方法fill()
(3)排序:Arrays类的静态方法sort()
(4)复制:Arrays类的方法copyOf()、copyOfRange()
5.插入排序法:将要排序的值逐个插入到其所适合的位置,其后的元素都向后移一个位置。
1 public class Test1 { 2 public static void main(String[] args) { 3 /* 4 * 1. 产生一个乱序数组赋给 a 5 * 2. 显示 a 数组 6 * 3. 对 a 数组排序 7 * 4. 显示 a 数组 8 */ 9 int[] a = random(); 10 System.out.println(Arrays.toString(a)); 11 System.out.println("---------------------"); 12 sort(a); 13 System.out.println("---------------------"); 14 System.out.println(Arrays.toString(a)); 15 16 } 17 18 private static int[] random() { 19 /* 20 * 1. 随机产生一个数组长度赋给 len 21 * 长度范围 [5, 11) 22 * 2. 新建 len 长度的数组赋给 a 23 * 3. 循环 i 从 0 到 <len 递增 24 * 4. 在a数组的i位置, 25 * 放入一个100内的随机值 26 * 5. 返回数组 a 27 */ 28 29 int len = 30 5 + new Random().nextInt(6); 31 int[] a = new int[len]; 32 for(int i=0;i<len;i++) { 33 a[i] = new Random().nextInt(100); 34 } 35 return a; 36 } 37 38 private static void sort(int[] a) { 39 /* 40 * 1. 循环 i 从 1 到 <a.length 递增 41 * 2. 循环 j 从 i-1 到 >=0 递减 42 * 3. 如果 a[j+1] < a[j] 43 * 交换两个位置的值 44 * 4. 否则,break 45 * 5. 打印数组 a 46 */ 47 48 // 第一个值,认为是有序数字序列 49 for(int i=1;i<a.length;i++) { 50 // j循环,将i位置的值,向前插入 51 for(int j=i-1;j>=0;j--) { 52 if(a[j+1] < a[j]) { 53 int t = a[j+1]; 54 a[j+1] = a[j]; 55 a[j] = t; 56 } else { 57 break; 58 } 59 } 60 System.out.println(Arrays.toString(a)); 61 } 62 } 63 }
冒泡排序法:对比相邻的元素值,满足条件则交换,把较小的元素移动到数组的前面,较大的移动到数组的后面。
1 public class Test1 { 2 public static void main(String[] args) { 3 /* 4 * 1. 产生一个乱序数组赋给 a 5 * 2. 显示 a 数组 6 * 3. 对 a 数组排序 7 * 4. 显示 a 数组 8 */ 9 int[] a = random(); 10 System.out.println(Arrays.toString(a)); 11 System.out.println("---------------------"); 12 sort(a); 13 System.out.println("---------------------"); 14 System.out.println(Arrays.toString(a)); 15 16 } 17 18 private static int[] random() { 19 /* 20 * 1. 随机产生一个数组长度赋给 len 21 * 长度范围 [5, 11) 22 * 2. 新建 len 长度的数组赋给 a 23 * 3. 循环 i 从 0 到 <len 递增 24 * 4. 在a数组的i位置, 25 * 放入一个100内的随机值 26 * 5. 返回数组 a 27 */ 28 29 int len = 30 5 + new Random().nextInt(6); 31 int[] a = new int[len]; 32 for(int i=0;i<len;i++) { 33 a[i] = new Random().nextInt(100); 34 } 35 return a; 36 } 37 38 private static void sort(int[] a) { 39 /* 40 * 1. 循环 i 从 0 到 <a.length 递增 41 * 2. 循环 j 从 a.length-1 到 >i 递减 42 * 3. 如果 a[j] < a[j-1] 43 * 4. 两个位置的值交换 44 * 5. 打印数组 a 45 * 46 */ 47 48 for(int i=0;i<a.length;i++) { 49 // j循环,将最小值推到 i 位置 50 boolean flag = false;//还没有交换 51 for(int j=a.length-1;j>i;j--) { 52 if(a[j] < a[j-1]) { 53 int t = a[j]; 54 a[j] = a[j-1]; 55 a[j-1] = t; 56 flag = true;//如果交换,flag置成true 57 } 58 } 59 if(! flag) { 60 // flag的值还是 false,没有交换 61 // 排序完成 62 break; 63 } 64 65 System.out.println(Arrays.toString(a)); 66 } 67 } 68 }