Java冒泡排序(懵逼排序图解)

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。----来自百度百科

简单de说:

升序 排列:相邻元素两两比较 的往后放, 的往前放,最终 最大值 出现在 索引 处。
降序 排列:相邻元素两两比较 的往后放, 的往前放,最终 最小值 出现在 索引 处。

懵逼了吗?来个图解(升序)😭😭😭

在这里插入图片描述

看图上代码😅😅😅

1.键盘录入选择排序方式
2.排序
3.输出为数学中的数组格式(字符串)

import java.util.Scanner;

class BubbleSort{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		
		int[] arr = {1, 2, 4, 9, 7, 10, 88, 0, -1, 666};
		
		// 输入升序/降序
		System.out.println("对数组[1, 2, 4, 9, 7, 10, 88, 0, -1, 666]进行排序。");
		
		while(true){
			System.out.print("请输入排序方式(0:升序,1:降序):");
			int method = sc.nextInt();
			
			System.out.println("\n ┌------------------------------------------------┐\n");
			
			if(method == 0 || method == 1){
				// 调用排序方法
				int[] result = bubbleSort(arr, method);
				
				System.out.print(" ├  " + (method == 0 ? "升序" : "降序") + "排列:");
				
				// 调用输出方法
				String res = printArr(result);
				System.out.print(res + " ┤");
			}else {
				System.out.print(" ├               请输入正确的指令!               ┤");
			}
			
			System.out.println("\n\n └------------------------------------------------┘\n");
		}
	}
	
	// 数组冒泡排序
	public static int[] bubbleSort(int[] arr, int method){ // method:排序方式--0:升序,1:降序
		if(method == 0){ // 升序排列
			for(int i = 0, len = arr.length; i < len; i++){
				for(int j = 0, sortLen = len - i - 1; j < sortLen; j++){
					if(arr[j] > arr[j + 1]){
						arr[j] = arr[j] ^ arr[j + 1];
						arr[j + 1] = arr[j] ^ arr[j + 1];
						arr[j] = arr[j] ^ arr[j + 1];
					}
				}
			}
		}else if(method == 1){ // 降序排列
			for(int i = 0, len = arr.length; i < len; i++){
				for(int j = 0, sortLen = len - i - 1; j < sortLen; j++){
					if(arr[j] < arr[j + 1]){
						arr[j] = arr[j] ^ arr[j + 1];
						arr[j + 1] = arr[j] ^ arr[j + 1];
						arr[j] = arr[j] ^ arr[j + 1];
					}
				}
			}
		}
		
		return arr;
	}
	
	// 输出数组
	public static String printArr(int[] arr){
		String arrString = "[";
		for(int i = 0, len = arr.length; i < len; i++){
			if(i < len - 1){
				arrString += (arr[i] + ", ");
			}else{
				arrString += (arr[i] + "]");
			}
		}
		return arrString;
	}
}

如果你看到了这里,请小伙伴给个一键三连,你的肯定是对我最大的鼓励-

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

行走的程序喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值