java基础(一) 对java经典排序算法的理解之冒泡排序算法

本文深入解析了冒泡排序算法的原理、实现过程及代码示例,通过具体实例演示了排序步骤,适合初学者理解排序算法的基本概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(一)冒泡排序

1、由来:这个算法的名字由来是因为越大的元素会经由交换慢慢“浮“到数列的顶端,就如同碳酸饮料中二氧化碳的气泡最终会浮到顶上一样,故名“冒泡排序”。
2、 原理:如其名,其实现过程是对比相邻的元素值,如果满足条件就交换元素值,将较小的元素值移动到数组的前面,将较大的元素值移动到数组的后面,这样数组元素就像气泡一样从底部升到顶部。
3、时间复杂度:O(n^2)
4、算法稳定性:稳定排序算法
冒泡排序原理图
5、思路:java中的冒泡排序在双层循环中实现,其中外层循环控制的是排序的轮数,总循环次数为排序数组的长度减1,内层循环主要用于比较相邻元素的大小,以确定是否要交换位置,对比和交换次数依排序轮数减少。
6、给定一个数组实例:int[] arr = {90,81,87,32,21,93}
7、冒泡排序代码为:

package com.qiao.day1;

public class Bubble {
	public static void main(String[] args) {
		int[] arr = { 90, 81, 87, 32, 21, 93 };
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr.length - 1 - i; j++) {
				if (arr[j] > arr[j + 1]) {
					int temp = arr[j + 1];
					arr[j + 1] = arr[j];
					arr[j] = temp;
				}
			}
			System.out.print("这是第" + i + "次比较的结果:");
			show(arr);
			System.out.println();
		}

	}

	public static void show(int[] arr) {
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + " ");
		}
	}
}

8、排序分析:
我们要对这个数组{90,81,87,32,21,93}进行排序,若要按照从小到大的顺序排序,则第一轮的排序应该是这样的:
|90|81|87|32|21|93| 先将90和81进行比较,因90>81,所以将这两个数交换位置,得到:
|81|90|87|32|21|93| 在将90和87进行比较,因90>87,所以将这两个数交换位置,得到:
|81|87|90|32|21|93| 在将90和32进行比较,因90>32,所以将这两个数交换位置,得到:
|81|87|32|90|21|93| 在将90和21进行比较,因90>21,所以将这两个数交换位置,得到:
|81|87|32|21|90|93| 在将90和93进行比较,因90<93,所以不需要交换位置,
初始化排序结果为:{81,87,32,21,90,93},在第一轮的排序基础之上进行第二轮排序:
|81|87|32|21|90|93| 将81和87进行比较,因81<87,所以这两个数不交换位置,得到:
|81|87|32|21|90|93| 将87和32进行比较,因87>32,所以交换这两个数的位置,得到:
|81|32|87|21|90|93| 将87和21进行比较,因87>21,所以交换这两个数的位置,得到:
|81|32|21|87|90|93| 将87和90进行比较,因87<90,所以不需要交换位置,得到:
|81|32|21|87|90|93| 将90和93进行比较,因90<93,所以不需要交换位置,得到:
|81|32|21|87|90|93|
第一轮的排序结果为:{81,32,21,87,90,93},在第二轮的排序基础上进行第三轮排序:
|81|32|21|87|90|93| 将81和32进行比较,因81>32,所以交换这两个数的位置,得到:
|32|81|21|87|90|93| 将81和21进行比较,因81>21,所以交换这两个数的位置,得到:
|32|21|81|87|90|93| 将81和87进行比较,因81<87,所以不需要交换位置,得到:
|32|21|81|87|90|93| 将87和90进行比较,因87<90,所以不需要交换位置,得到:
|32|21|81|87|90|93| 将90和93进行比较,因90<93,所以不需要交换位置,得到:
|32|21|81|87|90|93|
第二轮的排序结果为:{32,21,81,87,90,93},如此循环,得到的第三轮的排序结果为:{21,32,81,87,90,93},
最后的排序结果为{21,32,81,87,90,93}
9、代码分析:
(1)首先明确我们所需要的的是用冒泡算法去给{90,81,87,32,21,93}这几个数排序
(2)明确冒泡排序算法的思路,两两比较,然后比较的轮数为要排序的数组长度减1
(3)该代码所展示的是每轮比较的结果
10、结果截图:
结果截图11、最后的最后,附图:诶嘿嘿

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值