B站韩顺平java学习笔记(五)--数组、排序、查找章节

目录

一、数组

1、数组介绍

        (1)数组的定义

        (2)数组的引用

2、数组使用注意事项和细节

3、数组的赋值机制

 二、排序

1、介绍

2、排序的分类

        (1)内部排序

        (2)外部排序

三、查找

1、顺序查找

2、二分查找

四、二维数组

1、形式

2、关键概念

3、使用细节和注意事项

知识点

1、杨辉三角

2、声明

3、细节


一、数组

1、数组介绍

        数组可以存放多个同一类型的数据。数组也是一种数据类型,是引用类型。即,数组是一组数据。

        (1)数组的定义

        ① 第一种 动态分配方式

        语法:数据类型 数组名[ ] = new 数据类型[大小]   

        //或者  数据类型[ ] 数组名 = new 数据类型[大小] 

        例如:int a[ ] = new int[5] //创建了一个数组,名字a,存放了5个int型数据

        ② 第二种 动态分配方式

        先声明数组:

        语法:数组类型 数组名[ ];也可以 数组类型[ ] 数组名;

        例如:int a[ ];或者 int a[ ];

        再创建数组:

        语法:数组名 = new 数组类型[大小];

        例如:a = new int[10];

        ③  第三种 静态初始化

        初始化数组

        语法: 数据类型 数组名[ ] = {元素值,元素值...}

        例如:int a[ ] = {2,3,4,5,6,7}

        (2)数组的引用

        数组名[下标/索引/index]

        注意:数组的下标从 0 开始

2、数组使用注意事项和细节

        (1)数组是多个相同类型数据的组合,实现对这些数据的统一管理;

        (2)数组中的元素可以是任何数据类型,包括基本类型和引用类型,但不能混用;

        (3)数组创建后,如果没有赋值,有默认值,int(0),short(0),byte(0),long(0),float(0.0),double(0.0),char(\u0000),boolean(false),String(null);

        (4)使用数组的步骤:①声明数组并开辟空间;②给数组各个元素赋值;③使用数组;

        (5)数组的下标是从 0 开始的;

        (6)数组下标必须是在指定范围内使用,否则报下标越界异常;

        (7)数组属于引用类型,数组型数据是对象(object)。

3、数组的赋值机制

        (1)基本数据类型赋值,这个值就是具体的数据,而且不会互相影响。

        例如: int n1 = 2; int n2 = n1;

        (2)数组在默认情况下是引用传递,赋的值是地址。

int[] array1 = {1,2,3};
int[] array2 = array1;
array2[0] = 10;
for(int i = 0,i <= array1.length,i++){
    System.out.println(array[i]);
}
//输出结果为10,2,3

        值(传递)拷贝和引用(传递)拷贝的区别:

B站韩顺平java学习笔记(五)--数组、排序、查找章节_第1张图片

 二、排序

1、介绍

        排序是将多个数据,依照指定的顺序进行排列的过程。

2、排序的分类

        (1)内部排序

        指将需要处理的所有数据都加载到内存存储器中进行排序。包括(交换式排序法、选择式排序法和插入式排序法)。

        ①  冒泡排序法

        基本思想:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻的元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部。

        特点:

        a.  假设一共由num个元素;

        b.  一共进行 num - 1 次排序(可以当作外层循环);

        c.  每 1 轮循环可以确定一个数的位置;

        d.  当进行比较时,如果前面的数大于后面的数,就交换;

        e.  每轮比较在减少。

        (2)外部排序

        数据量过大,无法全部加载到内存中,需要借助外部存储进行排序,包括(合并排序法和直接合并排序法)

三、查找

1、顺序查找

2、二分查找

四、二维数组

1、形式

        (1)动态初始化法一

        类型[][] 数组名 = new 类型[大小][大小];

        int[ ][ ] arr = int[2][2]

        (2)动态初始化法二

        先声明:类型 数组名[][];

        再定义(开辟空间):数组名 = new 类型[大小][大小];

        赋值(有默认值):比如int的默认值是0。

        (3)动态初始化法三

        先声明外层数组的长度,而不声明内层数组的长度。

//创建 二维数组,一个有3个一维数组,但是每一个一维数组还没有开数据空间
int[][] = new int[3][];
for(int i = 0;i < arr.length;i++){  //遍历arr每一个一维数组
// 给每个一维数组开空间 new
// 如果没有给一维数组 new, 那么 arr[i] 就是null
    arr[i] = new int[i + 1];
    
    //便利一维数组,并给一维数组的每个元素赋值
    for(int j = 0;j < arr[j].length;j++){
        arr[i][j] = i + 1; 
    }

}
//输出的结果为
//1
//2 2
//3 3 3

        (4)静态初始化

        定义:类型 数组名[][] = {{值1,值2...},{值1,值2...},{值1,值2...}...}

        访问:固定方式即可。

2、关键概念

        (1)二维数组的元素个数(长度)为arr.length,二维数组第i个数组元素的个数(长度)为arr[i].length;

        (2)二维数组的每个元素是一维数组,所以如果需要得到每个一维数组的值,需要再次循环遍历;

        (3)访问第(i+1)个一维数组的第j+1个值:arr[ i ][ j ]

3、使用细节和注意事项

        (1)二维数组的声明方式:

        int[][] y 或者 int[] y[] 或者 int y[][]

        (2)二维数组实际上是由多个一维数组组成的,它的各个一维数组的长度可以相同,也可以不同。

知识点

1、杨辉三角

for(int i = 0;i < arr.length;i++){
	arr[i] = new int[i + 1];
	for (int j = 0;j < arr[i].length;j++) {
		if (j == 0 || j ==arr[i].length - 1) {
			arr[i][j] = 1;
				}else{
					arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
				}
				
	}
			
}

2、声明

        int[] x,y[];

        声明了一个为int类型的一维数组x,一个为int类型的二维数组y。

3、细节

        String strs = new String[]{"a","b","c"}

        这样的写法也可以//注意[]内不能有数字

你可能感兴趣的:(java,学习,java)