java从小白到工程师--基础篇(四)

今天,一起学习一下java中非常重要的内容:数组和冒泡排序。

我们首先看一下数组的定义:

1.可存储相同数据类型数据连续的存储单元中;

2.可通过指定数组的名称和长度来声明数组;

3.一旦声明大小,不可更改;

4.数组元素可以通过数组名和索引来进行访问(注:目前可以这样理解:存入的每一个数据就是一个元素;java中索引从0开始,即第一个元素的索引是0,第二个元素的索引是1

5.数组可以是一维数组,也可以是多维(即数组的元素是数组)

示例:

public static void main(String[] args) {
		int[] arr;//声明数组名
		arr =new int[5];//声明数组大小,当然这两步可以合并为一步,此处只为更好理解
		arr[0]=1;//为数组添加元素
		arr[1]=2;
		arr[2]=3;
		arr[3]=4;
		arr[4]=5;
		System.out.println("索引为2的元素是:"+arr[2]);//字符串拼接使用“+”
	}

运行结果:索引为2的元素是:3。

示例2:

public static void main(String[] args) {
		int arr[] = new int[]{1,2,3,4,5};//定义数组
		System.out.println(arr[2]);//取下角标是2的元素(第三个)
	}
遍历数组的两种常用方式

方式一:for循环遍历,示例如下:

public static void main(String[] args) {
		int arr[] = new int[]{1,2,3,4,5};//定义数组
		for (int i = 0; i < arr.length; i++) {//arr.length为内置函数,可以得到数组arr的长度(一个元素算一个)
			System.out.println("第"+(i+1)+"个元素是:"+arr[i]);//字符拼接,i从零开始,下角标也是
		}
	}
方式二:增强for循环

展示案例之前先看一下语法:

for(类型   变量名  :  集合或者数组)

在快捷键提示下显示的内容是foreach

看一下示例代码:

public static void main(String[] args) {
		int arr[] = new int[]{1,2,3,4,5};//定义数组
		for (int i : arr) {//因为定义的是int类型数组,所以此处的类型要写int,其他类型同理
			System.out.println("第"+(i+1)+"个元素是:"+arr[i]);
		}
		
	}
下面我们将讲解一个比较经典也比较简单的算法——冒泡排序:

在开始讲解之前,先请大家看一段魔性的舞蹈
大家通过舞蹈可以看出,我们在排序的时候并不能一口气让所有的数据都排排坐,吃果果。每次只能找出一个最大或者最小的元素,安排妥当。原理如下:

冒泡排序算法的运作如下:(从后往前)
  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
上述内容摘自百度百科。

下面我们将在代码中体现这一算法的逻辑。

public static void main(String[] args) {
		int arr[] = new int[]{8,7,6,5,4,3,2,1};//定义数组
		for(int i=0;i<arr.length-1;i++){//外循环控制循环次数,因为是两两比较,为了优化,此处次数-1
			for(int j=0;j<arr.length-i-1;j++){//内循环,每次找到一个最大的数字放到最后
				if(arr[j]>arr[j+1]){//交换条件,前一个比后一个大就互换
					int temp = arr[j];//中间变量,相当于两个装满水的碗要互换,需要一个空碗,这个temp就是那个 空碗
					arr[j] = arr[j+1];
					arr[j+1] = temp;
				}
			}
			System.out.println("第"+(i+1)+"次排序结果:");
			for (int k : arr) {//遍历数组查看结果
				System.out.print(k+"  ");//此处结果不换行,没有ln
			}
			System.out.println();//换行
		}
		System.out.println("最终排序结果:");
		for (int i : arr) {
			System.out.print(i+"  ");
		}
	}

运行结果如下:


很直观。

今天先写到这里,未完待续~~


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值