• 冒泡排序


    冒泡排序

    冒泡排序类似于泡泡一样从底层逐次上升到高层的排序过程,每次从数组的第一个元素开始,按(第1个,第2个),(第2个,第3个),(第3个,第4个)...的过程进行比较,每次都取最大的值放置到后面的位置,那么最后得到的值就一定是数组中的最大值,然后将该值排除在外,然后在剩余的数组元素中继续进行上述过程,直至只剩下第一个元素(一定是最小的)。
    假定初始数组为:{4,2,3,1}

    第一轮冒泡排序之后得到{2,3,1,4},以下是详细的比较过程:

    第二轮冒泡排序之后得到{2,1,3,4},以下是详细的比较过程:

    第三轮冒泡排序之后得到{1,2,3,4},以下是详细的比较过程:

    第四轮冒泡排序只剩第一个元素值,该值一定是最小值,所以可以得到最终结果为{1,2,3,4}

    对应的算法代码为:

    static void bubble(int[] arr) {
        for (int i = 0; i < arr.length; i++) {   //外层循环
            int range = arr.length - i;
            for (int j = 0; j < range - 1; j++) {//内层循环
                if (arr[j] > arr[j + 1]) {       //如果当前值大于下一个位置的值则进行交换操作
                    Utils.swap(arr, j, j + 1);
                }
            }
        }
    }
    

    测试排序结果

    通过对数器的方式进行排序结果的验证

    //测试代码
    public static void main(String[] args) {
        int size = 15;
        int[] arr1 = Utils.generateRandomArray(size, 100);
        int[] arr2 = new int[size];
        System.arraycopy(arr1, 0, arr2, 0, arr1.length);
        System.out.println("原数组:			" + Arrays.toString(arr1));
        Arrays.sort(arr1);
        System.out.println("系统方法排序后:	" + Arrays.toString(arr1));
        bubble(arr2);
        System.out.println("冒泡排序排序后:	" + Arrays.toString(arr2));
    }
    
    原数组:		[46, 54, 58, 98, 25, 86, 19, 98, 72, 16, 40, 93, 33, 82, 29]
    系统方法排序后:	[16, 19, 25, 29, 33, 40, 46, 54, 58, 72, 82, 86, 93, 98, 98]
    冒泡排序排序后:	[16, 19, 25, 29, 33, 40, 46, 54, 58, 72, 82, 86, 93, 98, 98]
    

    如果对你有帮助,点个赞,或者打个赏吧,嘿嘿
    整理不易,请尊重博主的劳动成果

  • 相关阅读:
    Paypal开源nodejs框架研究(一)KrakenJs
    CoffeeScript 陷阱
    nodejs express route 的用法
    Moogoose实践之:Schema写全很重要,不然会把时间浪费在调错上!
    微软新一代输入法框架 TSF
    VC++在Win7和Win8系统下获得百度输入法的名字
    两款MongoDB的可视化管理工具
    网易开源游戏服务器框架-Pomelo实践(一)
    WinDbg之Page Heap实践
    MongoDB 备份与恢复的实践
  • 原文地址:https://www.cnblogs.com/Mango-Tree/p/13213509.html
Copyright © 2020-2023  润新知