冒泡排序


  1. 思路:
    • 比较相邻的元素,如果第一个比第二个大,就交换它们两个,每轮确定一个最大值,并放入末尾
    • 下一轮就可以少比较一个
    • 每个元素都需要比较,所以轮数为长度-1次
    • 每比一次,就确定一个最大值,就代表一轮结束,所以比较的次数为长度-1-i  i为当前的轮数
  2. 实现:
    • 使用双重for循环
    • 外层循环控制轮数
    • 内层循环控制比较的次数
  3. 案例:
    public  int[] bubbleSort(int[] arr){
        int arrLength = arr.length;
        for (int i = 0; i < arrLength - 1; i++) {
            for (int j = 0; j < arrLength - 1 - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    arr[j] = arr[j] ^ arr[j + 1];
                    arr[j + 1] = arr[j + 1] ^ arr[j];
                    arr[j] = arr[j] ^ arr[j + 1];
                }
            }
        }
        return arr;
    } 
    function bubbleSort(arr) {
        var len = arr.length;
        var temp = null;
        for (var i = 0; i < len - 1; i++) {
            for (var j = 0; j < len - 1 - i; j++) {
                if (arr[j] > arr[j+1]) {        // 相邻元素两两对比
                    temp = arr[j+1];        // 元素交换
                    arr[j+1] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        return arr;
    }

文章作者: zrh
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 zrh !
  目录