排序算法之冒泡排序
思路:
冒泡排序是将下标最小的值与相邻的值进行比较,如果逆序则交换位置,然后后移一位继续与相邻的值进行比较,
所有值都参与过就结束。第一轮将最大的值(代码注释里的第0大)放到最后一个位置(代码注释里的倒数第0个位置)
依次类推,每一轮确定第i大的数放到倒数第i个位置,共有arr.length - 1轮(如果某轮没有一次交换位置,那么表明已经有序,可以提前退出)
代码:
1 /** 2 * 冒泡排序 3 * @param arr 4 */ 5 public static void bubbleSort(int[] arr) { 6 if (arr == null || arr.length == 0) { 7 return; 8 } 9 //共arr.length - 1趟 10 for (int i = 0; i < arr.length - 1; i++) { 11 //每趟确定第i大的数放在倒数第i个位置,需要比较arr.length - 1 - i次 12 int temp; 13 //如果某轮一次也没有交换,那么就不用再进行排序了 14 boolean flag = true; 15 for (int j = 0; j < arr.length - 1 - i; j++) { 16 //逆序则进行交换 17 if (arr[j] > arr[j + 1]) { 18 temp = arr[j]; 19 arr[j] = arr[j + 1]; 20 arr[j + 1] = temp; 21 flag = false; 22 } 23 } 24 if (flag) { 25 break; 26 } 27 } 28 }