第 6 章 数组、排序和查找

9/6/2022 韩顺平java笔记

# 6.1 为什么需要数组

# 6.1.1 数组介绍

在这里插入图片描述

# 6.1.2 数组快速入门

可以通过 数组名.length 得到数组的大小/长度

# 6.2 数组的使用

在这里插入图片描述
注意:int a[ ] = new int [5] 和 int[ ] a = new int [5] 是等价的。

# 6.2.1 使用方式 2-动态初始化

在这里插入图片描述

# 6.2.2 使用方式 3-静态初始化

在这里插入图片描述

# 6.3 数组使用注意事项和细节

在这里插入图片描述

# 6.5 数组赋值机制

在这里插入图片描述

# 6.6 数组拷贝

在这里插入图片描述
在这里插入图片描述

# 6.7 数组反转

在这里插入图片描述
方式 1:通过找规律反转

public class ArrayReverse { 

    public static void main(String[] args) { 

        int[] arr = {11, 22, 33, 44, 55, 66}; 
        int temp = 0; 
        int len = arr.length; 
        for( int i = 0; i < len / 2; i++) { 
            temp = arr[len - 1 - i];
            arr[len - 1 - i] = arr[i]; 
            arr[i] = temp; 
        }

        System.out.println("===翻转后数组==="); 
        for(int i = 0; i < arr.length; i++) { 
       	 	System.out.print(arr[i] + "\t");
        } 
    } 
}		
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

方式 2:使用逆序赋值方式

public class ArrayReverse02 { 
	
    public static void main(String[] args) { 

        int[] arr = {11, 22, 33, 44, 55, 66}; 
        int[] arr2 = new int[arr.length]; 

        for(int i = arr.length - 1, j = 0; i >= 0; i--, j++) { 
        	arr2[j] = arr[i]; 
        }
        arr = arr2; 
        System.out.println("====arr 的元素情况====="); 

        for(int i = 0; i < arr.length; i++) {
        	System.out.print(arr[i] + "\t"); 
        } 
    } 
}	
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 6.9 排序的介绍

在这里插入图片描述

# 6.10 冒泡排序法

冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素 的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。

在这里插入图片描述
在这里插入图片描述

public class BubbleSort { 
	
	public static void main(String[] args) {
	int[] arr = {24, 69, 80, 57, 13, -1, 30, 200, -110}; 
	int temp = 0; 
	for( int i = 0; i < arr.length - 1; i++) {
		for( int j = 0; j < arr.length - 1 - i; j++) {
			
			if(arr[j] > arr[j + 1]) { 
				temp = arr[j]; 
				arr[j] = arr[j+1]; 
				arr[j+1] = temp; 
			} 
		}
		System.out.println("\n==第"+(i+1)+"轮=="); 
		for(int j = 0; j < arr.length; j++) { 
			System.out.print(arr[j] + "\t");
		} 
	}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 6.12 查找

# 6.12.1 介绍:

在 java 中,我们常用的查找有两种:

  1. 顺序查找
  2. 二分查找

# 6.12.2 案例演示:

有一个数列:白眉鹰王、金毛狮王、紫衫龙王、青翼蝠王猜数游戏:从键盘中任意输入一个名称,判断数列中是否 包含此名称【顺序查找】 要求: 如果找到了,就提示找到,并给出下标值。

    import java.util.Scanner; 
    public class SeqSearch { 
    	
    	public static void main(String[] args) { 
    		String[] names = {"白眉鹰王", "金毛狮王", "紫衫龙王", "青翼蝠王"}; 
    		Scanner myScanner = new Scanner(System.in); 
    		System.out.println("请输入名字"); 
    		String findName = myScanner.next(); 
    		
    		
    		int index = -1; 
    		for(int i = 0; i < names.length; i++) { 
    			
    			if(findName.equals(names[i])) { 
    				System.out.println("恭喜你找到 " + findName); 
    				System.out.println("下标为= " + i); 
    				
    				index = i; 
    				break;
    			} 
    		}
    		if(index == -1) { 
    			System.out.println("sorry ,没有找到 " + findName); 
    		}
    	}
    
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

# 6.14 二维数组的使用

# 6.14.2 使用方式 1: 动态初始化

在这里插入图片描述
在这里插入图片描述

# 6.14.3 使用方式 2: 动态初始化

在这里插入图片描述

# 6.14.4 使用方式 3: 动态初始化-列数不确定

在这里插入图片描述

    public class TwoDimensionalArray03 {
    	
    	public static void main(String[] args) { 
    		
    		int[][] arr = new int[3][]; 
    		for(int i = 0; i < arr.length; i++) {


   			
   			arr[i] = new int[i + 1]; 
   			
   			for(int j = 0; j < arr[i].length; j++) { 
   				arr[i][j] = i + 1;
   			}
   		}
   		System.out.println("=====arr 元素====="); 
   		
    		for(int i = 0; i < arr.length; i++) { 
    			
    			for(int j = 0; j < arr[i].length; j++) { 
    				System.out.print(arr[i][j] + " "); 
    			}
    			System.out.println();
    		} 
    	} 
    
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

# 6.14.5 使用方式 4: 静态初始化

在这里插入图片描述

# 6.15 二维数组的应用案例

使用二维数组打印一个 10 行杨辉三角
在这里插入图片描述

public class YangHui { 
	
	public static void main(String[] args) {
		 
		int[][] yangHui = new int[12][]; 
		for(int i = 0; i < yangHui.length; i++) {
			
			yangHui[i] = new int[i+1]; 
			
			for(int j = 0; j < yangHui[i].length; j++){ 
				
				if(j == 0 || j == yangHui[i].length - 1) { 
					yangHui[i][j] = 1; 
				} else {
					yangHui[i][j] = yangHui[i-1][j] + yangHui[i-1][j-1]; 
				}
			} 
		}
		
		for(int i = 0; i < yangHui.length; i++) { 
			for(int j = 0; j < yangHui[i].length; j++) {
				System.out.print(yangHui[i][j] + "\t"); 
			}
			System.out.println();
		} 
	} 
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

# 6.16 二维数组使用细节和注意事项

在这里插入图片描述

# 6.17 二维数组课堂练习

在这里插入图片描述