3种简单排序之——冒泡排序

本文详细介绍了冒泡排序的算法思想,通过逐个比较相邻元素并进行交换,逐步将最大(或最小)的元素放到正确位置。文章还展示了具体的Java代码实现,并通过过程分解展示了排序过程,包括多轮比较和交换操作,帮助读者深入理解冒泡排序的工作原理。

冒泡排序


1. 算法思想

​ 从左到右,逐个比较相邻的元素,首轮将最大(或最小)的元素放到数组最右边,第二轮则会将第二大(小)的数放到右边第二的位置。

2. 代码实现

package sort;

public class BubbleSort {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        // 定义为排序的数组,并输出
		int[] arr = { 5, 7, 1, 4, 3, 6, 2 };
		for (int item : arr) {
			System.out.print(item + " ");
		}
		System.out.println();

        // 执行冒泡排序,输出结果
		bubbleSort(arr);
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + " ");
		}
	}

	// 冒泡排序
	public static int[] bubbleSort(int[] arr) {
        // 共执行n-1轮循环(第n-1次循环即可确定位置0和1的数,且执行n次循环会判断位置0和-1的大小,发生数组索引越界)
		for (int i = 0; i < arr.length - 1; i++) {
            // 共进行n-1-i次比较,因为执行到第i次循环,就有i个元素已经确认位置了,需要比较的数组长度就变成了n-i
			for (int j = 0; j < arr.length - i - 1; j++) {
				if (arr[j] > arr[j + 1]) {
					int t = arr[j];
					arr[j] = arr[j + 1];
					arr[j + 1] = t;
				}
			}
		}
		return arr;
	}
}

3. 运行结果

在这里插入图片描述

4. 过程分解

本次实例选择从小到大排序。


5714362

5和7比较,未发生交换。


5714362

7和1比较,发生交换。

5174362

5174362

7和4比较,发生交换。

5147362

5147362

7和3比较,发生交换。

5143762

5143762

7和6比较,发生交换。

5143672

5143672

7和2比较,发生交换。

5143627

此时7已经完成排序。


5143627

5和1比较,发生交换。

1543627

1543627

5和4比较,发生交换。

1453627

1453627

5和3比较,发生交换。

1435627

1435627

5和6比较,未发生交换。


1435627

6和2比较,发生交换。

1435267

此时6和7已完成排序。
……

同理,可通过多次循环,逐位完成排序,最终实现冒泡排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值