冒泡排序
排序算法
Java语言
冒泡排序是一种简单的排序算法,它利用了交换相邻两个数的方式,将一个序列按照从小到大或从大到小的顺序重新排列。本文将围绕Java语言中的冒泡排序进行详细介绍,重点讲解从大到小排列的实现方法和优化方案。
在Java语言中实现从大到小的排序,和从小到大的排序本质上是相同的。只需要在每次交换两个数时,比较的方式改为a[j] > a[j+1]即可。
具体的实现过程如下:
```java
public static void bubbleSort(int[] arr) {
int len = arr.length;
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - 1 - i; j++) {
if (arr[j] < arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
```
1. 增加标识位判断
在上面的代码中,每次内层循环都会遍历整个数组,不管数组是否已经有序。所以我们可以使用一个标识位来记录是否发生交换,如果没有交换,说明数组已经有序,结束外层循环即可。
boolean flag;
flag = false;
flag = true;
if (!flag) break;
2. 优化内层循环次数
如果在一轮中,没有发生交换,则说明后面的数已经有序。所以在下一轮中只需要对前面的数进行比较即可。我们可以记录上一轮最后发生交换的位置,作为下一轮内层循环的截止点。
int pos = len - 1;
int k = 0;
for (int j = 0; j < pos; j++) {
k = j;
pos = k;
本文主要介绍了Java语言中的冒泡排序,重点讲解了从大到小的实现方法和优化方案。通过学习本文,你应该已经掌握了冒泡排序的基本思路和实现方式,同时也理解了如何针对不同场景进行相应的优化。
网友留言(0)