【算法】2、十大排序之冒泡排序(Bubble Sort)

219 阅读1分钟

冒泡排序

每次此循环确定未排序的数组的最大值(每轮遍历固定一个元素),出现逆序交换元素,通过比较元素的大小,将较大的数依次交换到最后面。(或者每次寻找最小值,依次交换到最前边)。

复杂度分析: 时间复杂度O(N^2),空间复杂度O(1)。

4ec14a4c6f524d63b6d78f6d914515a8.gif (图片来自CSDN博主Zandz_

 public class BubbleSort {
     public static void bubbleSort(int[] arr) {
         int len = arr.length;
         for (int i = 0; i < len - 1; i++) {
             boolean flag = true;
             for (int j = 0; j < len - i - 1; j++) {
                 if (arr[j] > arr[j + 1]) {
                     int tmp = arr[j];
                     arr[j] = arr[j + 1];
                     arr[j + 1] = tmp;
                     flag = false;
                 }
             }
             //如果不需要交换位置,说明已经有序
             if (flag) {
                 break;
             }
         }
     }
 }

最后推荐一个学习算法的网站,里面可以查看各种算法的动画与步骤讲解: visualgo.net/en