冒泡算法详解(JAVA)

题目
使用冒泡算法对数组进行排序

输入
[6,1,2,7,9,3,4,5,10,8]

输出
[1,2,3,4,5,6,7,8,9,10]

解析


所谓的冒泡排序即每一次遍历都找到最大的一个数放到最后。
从index=0开始遍历,与下一个值进行对比,如果arr[i]>arr[i+1],则交换二者位置,否则位置不变。后移一位再与下一位对比,这样保证每一次遍历结束后都可以取到一个最大的数。

1. 第一次遍历获取到最大的数10,放置在index=9位置上

冒泡算法详解(JAVA)_第1张图片
2. 第二次遍历找到剩余数据中最大的数据9,放置在index=8位置上

 冒泡算法详解(JAVA)_第2张图片

 

3.直至某次遍历没有进行任何数据交换则说明该数组已经是从小到大排序了的


编码


    

public static void main(String[] args) {
        int[] arr = {6,1,2,7,9,3,4,5,10,8};
        execute(arr);
    }

    private static void execute(int[] arr){
        print("输入",arr);
        for (int i = 0; i < arr.length; i++) {
            boolean swaped = false;
            for (int j = 1; j < arr.length - i; j++) {
                // 后一个值比前一个值小则交换
                if(arr[j]


运行结果

输入:[6,1,2,7,9,3,4,5,10,8]

执行转换:[0,1]
转换前:[6,1,2,7,9,3,4,5,10,8]
转换后:[1,6,2,7,9,3,4,5,10,8]

执行转换:[1,2]
转换前:[1,6,2,7,9,3,4,5,10,8]
转换后:[1,2,6,7,9,3,4,5,10,8]

执行转换:[4,5]
转换前:[1,2,6,7,9,3,4,5,10,8]
转换后:[1,2,6,7,3,9,4,5,10,8]

执行转换:[5,6]
转换前:[1,2,6,7,3,9,4,5,10,8]
转换后:[1,2,6,7,3,4,9,5,10,8]

执行转换:[6,7]
转换前:[1,2,6,7,3,4,9,5,10,8]
转换后:[1,2,6,7,3,4,5,9,10,8]

执行转换:[8,9]
转换前:[1,2,6,7,3,4,5,9,10,8]
转换后:[1,2,6,7,3,4,5,9,8,10]

执行转换:[3,4]
转换前:[1,2,6,7,3,4,5,9,8,10]
转换后:[1,2,6,3,7,4,5,9,8,10]

执行转换:[4,5]
转换前:[1,2,6,3,7,4,5,9,8,10]
转换后:[1,2,6,3,4,7,5,9,8,10]

执行转换:[5,6]
转换前:[1,2,6,3,4,7,5,9,8,10]
转换后:[1,2,6,3,4,5,7,9,8,10]

执行转换:[7,8]
转换前:[1,2,6,3,4,5,7,9,8,10]
转换后:[1,2,6,3,4,5,7,8,9,10]

执行转换:[2,3]
转换前:[1,2,6,3,4,5,7,8,9,10]
转换后:[1,2,3,6,4,5,7,8,9,10]

执行转换:[3,4]
转换前:[1,2,3,6,4,5,7,8,9,10]
转换后:[1,2,3,4,6,5,7,8,9,10]

执行转换:[4,5]
转换前:[1,2,3,4,6,5,7,8,9,10]
转换后:[1,2,3,4,5,6,7,8,9,10]

输出:[1,2,3,4,5,6,7,8,9,10]

你可能感兴趣的:(算法,排序算法,java)