Java编程基础:常见排序算法-冒泡排序
程序员文章站
2022-06-06 14:02:40
...
需求:使用冒泡排序完成整型数组的升序排列。特意手画了一张图说明原理且手动排序,更形象生动的明白冒泡排序:
写一个有返回值的冒泡排序方法,由一个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}
上一篇: 北京超级云计算中心即将“开算”
下一篇: 我们是否还在诗意的栖居