思路
代码(注释)
public static void main(String[] args) {
Integer[] arr = new Integer[]{1,1,3,5,2,1,2,4,-1,1,7};
bubbleSort(arr);
System.out.println(new ArrayList<>(Arrays.asList(arr)));
}
// 冒泡排序
public static Integer[] bubbleSort(Integer[] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
// 若后面的比前面的值小,则交换两者的位置
if (arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
return arr;
}
总结
长度为n的数组,需要遍历(1 + 2 + 3 + … + n-1)次,而且需要交换位置的次数较多,整体来说效率较差,但相对来说比较好理解。思路和选择排序比较像,但由于选择排序的交换次数比冒泡排序少,故效率上来说,选择排序要快。