冒泡排序
import java.util.Arrays;
public class BubbleSort {
public int[] descSortV1(int[] arr){
int temp = 0;
for (int i = 0; i < arr.length-1; i++) {
for (int j = i+1; j < arr.length; j++) {
if(arr[i] < arr[j]){
temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
return arr;
}
public int[] descSortV2(int[] arr){
int temp = 0;
boolean isSorted = true;
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < arr.length-i-1; j++) {
if(arr[j] < arr[j+1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
isSorted = false;
}
}
if(isSorted){
break;
}
}
return arr;
}
public int[] descSortV3(int[] arr){
//记录最后一次交换的位置
int lastExchangeIndex = 0;
//无需数列的边界,每次比较只需要必到这里为止
int sortBorder = arr.length-1;
//临时变量
int temp = 0;
// 有序标记
boolean isSorted = true;
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < sortBorder; j++) {
if(arr[j] < arr[j+1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
//有元素交换,所以不是有序的
isSorted = false;
//更新最后一次元素交换的位置
lastExchangeIndex = j;
}
}
sortBorder = lastExchangeIndex;
if(isSorted){
break;
}
}
return arr;
}
public static void main(String[] args) {
BubbleSort bubbleSort = new BubbleSort();
System.out.println(Arrays.toString(bubbleSort.descSortV1(new int[]{10,3,5,2,7,1})) );
System.out.println(Arrays.toString(bubbleSort.descSortV1(new int[]{5,8,6,3,9,2,1,7})));
System.out.println(Arrays.toString(bubbleSort.descSortV2(new int[]{10,3,5,2,7,1})) );
System.out.println(Arrays.toString(bubbleSort.descSortV2(new int[]{5,8,6,3,9,2,1,7})));
System.out.println(Arrays.toString(bubbleSort.descSortV3(new int[]{10,3,5,2,7,1})) );
System.out.println(Arrays.toString(bubbleSort.descSortV3(new int[]{5,8,6,3,9,2,1,7})));
}
}



