欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java编程基础:常见排序算法-冒泡排序

程序员文章站 2022-06-06 14:02:40
...

需求:使用冒泡排序完成整型数组的升序排列。特意手画了一张图说明原理且手动排序,更形象生动的明白冒泡排序:Java编程基础:常见排序算法-冒泡排序

写一个有返回值的冒泡排序方法,由一个boolean值来控制传入的数组是以升序或降序排列:

// 冒泡排序,传入两个参数,一个数组,一个排序方式:ace升序,desc降序
	public static int[] bubbleSort(int[] arr, boolean isAce) {
		// 外围控制循环次数, 
		for (int i = 1; i < arr.length; i++) { 
			for (int j = 0; j < arr.length - 1; j++) { // 元素取值从0开始,到arr.length-1结束
				if (isAce) { // 升序
					if (arr[j] > arr[j + 1]) { // 如果前面的元素大,就交换位置
						int temp = arr[j]; // 中间变量
						arr[j] = arr[j + 1];
						arr[j + 1] = temp;
					}
				} else { // 降序
					if (arr[j] < arr[j + 1]) {
						int temp = arr[j];
						arr[j] = arr[j + 1];
						arr[j + 1] = temp;
					}
				}
			}
			System.out.print("第" + i + "次冒泡排序:");
			printArray(arr);
		}
		return arr;
	}

测试代码:先上冒泡排序的数组打印输出代码:

	// 打印数组
	public static void printArray(int arr[]) {
		System.out.print("{");
		for (int i = 0; i < arr.length; i++) { // 遍历输出数组的每个元素
			if (i == arr.length - 1) { // 取出最后一个元素,后面没有任何符号
				System.out.print(arr[i]);
			} else {
				System.out.print(arr[i] + ",");
			}
		}
		System.out.println("}\n");
	}

 再上测试代码:

	public static void main(String[] aaa) {

		int[] arr = { 23, 34, 31, 13, 5, 16, 26, 113, 20 };
		System.out.print("原数组的数据:");
		printArray(arr);

		int[] arr1 = bubbleSort(arr, true);
		System.out.print("冒泡排序后数组输出:");
		printArray(arr1);
    }

控制台结果输出:跟第一张图比较,手动的排序,是不是到第五次就已经完成了冒泡排序:

原数组的数据:{23,34,31,13,5,16,26,113,20}

第1次冒泡排序:{23,31,13,5,16,26,34,20,113}

第2次冒泡排序:{23,13,5,16,26,31,20,34,113}

第3次冒泡排序:{13,5,16,23,26,20,31,34,113}

第4次冒泡排序:{5,13,16,23,20,26,31,34,113}

第5次冒泡排序:{5,13,16,20,23,26,31,34,113}

第6次冒泡排序:{5,13,16,20,23,26,31,34,113}

第7次冒泡排序:{5,13,16,20,23,26,31,34,113}

第8次冒泡排序:{5,13,16,20,23,26,31,34,113}

冒泡排序后数组输出:{5,13,16,20,23,26,31,34,113}