三、数组

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 }
原文地址:https://www.cnblogs.com/yl-saber/p/5993604.html