冒泡排序:
1 //冒泡排序 2 //时间复杂度为O(N^2),空间复杂度为O(N) 3 public class BubbleSort { 4 public static void bubbleSort(int[] arr) { 5 if (arr.length == 0 || arr.length == 1) { 6 return; 7 } else { 8 // 随着每轮比较的进行,都有一个大数沉到后面排好序,因此外层的循环长度应该递减 9 for (int end = arr.length - 1; end > 0; end--) { 10 for (int i = 0; i < end; i++) { 11 if (arr[i] > arr[i + 1]) { 12 swap(arr, i, i + 1); 13 } 14 } 15 } 16 } 17 18 } 19 20 static void swap(int[] arr, int i, int j) { 21 // 不利用第三个变量交换两变量的位置。1.a和同一个数异或运算两次得到a本身 2.异或运算满足交换律 22 arr[j] = arr[j] ^ arr[i]; 23 arr[i] = arr[j] ^ arr[i]; 24 arr[j] = arr[j] ^ arr[i]; 25 } 26 27 public static void main(String[] args) { 28 int[] a = {2, 1, 7, 10, 3, 9, 5, 4, 6, 8}; 29 bubbleSort(a); 30 for(int i:a) 31 System.out.print(i+","); 32 } 33 }