【Java 基础】数组:基本概念、遍历方式、三种排序(冒泡、选择、插入)

本文深入探讨了数组的基本概念,包括定义方式和遍历方法,并详细介绍了三种经典的排序算法:冒泡排序、选择排序和插入排序。通过示例代码展示了每种排序算法的实现过程。同时,还阐述了二维数组的概念,以及如何遍历二维数组。这些内容对于理解和应用数组及排序算法至关重要。
摘要由CSDN通过智能技术生成

一、基本概念

  • 数组(array)是一种最简单的复合数据类型,它是有序数据的集合
  • 数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和不同的下标来确定数组中唯一的元素。
  • 数组的一般形式:

数组的一般形式

  • 数组在内存中的表现:

数组在内存中的表现

二、定义方式

三、数组遍历

① for 循环:

for(int i = 0; i < a.length; i++){
  System.out.print( a[i] );
}

① for each 循环:

for( int t :  a){
  System.out.print(t);
}

四、三种排序

① 冒泡排序:

/**
 * 冒泡排序
 * @param a 需排序数组
 */
public static void bubbleSort(int[] a) {
	for(int i = 0;i < a.length - 1; i++) {
		boolean f = true;
		for(int j = 0; j < a.length - 1; j++) {
			if(a[j] > a[j + 1]) {	//当前元素大于后元素时,进行交换
				f = false;	//代表有数据交换,继续执行
				//使用临时变量temp交换(可使用异或)
				int temp = a[j];
				a[j] = a[j + 1];
				a[j + 1] = temp;
			}
		}
		if(f) {		//f=true,元素有序,无需继续
			break;
		}
	}
}

结果展示:
在这里插入图片描述

② (直接)选择排序:

/**
 * 选择排序
 * @param a 需排序数组
 */
public static void selectSort(int[] a) {
	for (int i = 0; i < a.length; i++) {
		//初始化时,假使i为最小值,通过比较更新min和pos的值
		int min = a[i];	
		int pos = i;
		for (int j = i + 1; j < a.length; j++) {
			if (min > a[j]) {
				min = a[j];	//记录最小值
				pos = j;	//记录最小值原本位置下标,便于后面交换位置
			}
		}
		if(pos != i) {		//当最小下标为i时,不交换位置
			a[pos] = a[i];
			a[i] = min;
		}
	}
}

结果展示:
在这里插入图片描述

③ (直接)插入排序:

/**
 * 插入排序
 * @param a 需排序数组
 */
public static void insertSort(int[] a) {
	for(int i = 0; i < a.length; i++) {
		//按子集排序,第一次排序子集中仅有下标为0,1的两个元素,每次排序都将原子集后的元素纳入新子集,以此类推,直至完成全部元素排序
		int temp = a[i];		//使用临时变量temp保存原子集后的元素(待插入元素)
		int j;					//元素赋值使用下标
		for(j = i; j > 0 && a[j - 1] > temp; j--) {	//停止满足条件:1、进行至首个元素; 2、前一个元素已经小于新加入子集的元素
			a[j] = a[j - 1];	//将前一个值赋予下一个位置,若不满足停止条件,则继续循环
		}
		a[j] = temp;			//将temp保存的值(待插入元素),新加入子集的元素放在合适的位置
	}
}

结果展示:
在这里插入图片描述

五、二维数组

  • 二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,类型说明符 数组名[常量表达式][常量表达式]。

  • 二维数组又称为矩阵,行列数相等的矩阵称为方阵。对称矩阵a[i][j] = a[j][i]

  • 对角矩阵:n阶方阵主对角线外都是零元素。

  • 二维数组的想象图
    二维数组的想象图

  • 二维数组是“数组的数组”:

二维数组是“数组的数组”
遍历二维数组,需要使用双层for循环:

int arr[][] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };

		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr[0].length; j++) {
				System.out.print(arr[i][j]);
			}
			System.out.println();
		}

运行代码,则可得到下面的结果:
双层for循环遍历二维数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值