冒泡排序--思路+代码

冒泡排序:

1)冒泡排序介绍:
冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行,直到没有再需要交换的数,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

2) 冒泡排序 思路:
比较两个相邻的下标对应的元素,如果符合条件就交换位置(最值出现在最后位) ;
每一轮比较,需要比较的数列都会减少/变化,因为每一轮冒泡上浮出来的数已经不需要比了。

3)冒泡排序的平均时间复杂度是O(n²)。

代码:

package maopaopaixu;

/**
 * @author:张永辉;
 * @date: 2020/3/16; 8:41
 * todo: 冒泡排序:
 *      1. 每一层内循环,上浮出来一个当前数组中最小的元素;
 *      2. 多轮内循环结束后,排序结束;
 */
public class MaoPao2 {
    public static void main(String[] args) {
//        一,定义数组:
        int[] arr = {23,54,65,3,5,2,87,33,345,435,11,325,555,121,346,0,20,49,17};

//        二,定义一个临时变量,用来后边交换元素顺序,作中间值;
        int temp = 0;

//        三,开始排序:
//        1)外循环:用来控制内循环的轮数
        for (int i = 0; i < arr.length; i++) {

//            2)内循环:用来每次上浮出来一个当前数组中最小的数:
//                     arr.length-i,是因为每一轮内循环比较之后,已经上浮出来的数已经不需要再参与比较了,所以参与排序的数组长度应为:原数组长度-比较过的内循环轮数;
//                     arr.length-i-1,因为下边有个arr[j+1],所以-1是为了防止数组越界;
            for (int j = 0; j < arr.length-i-1; j++) {

//                2.1)交换元素顺序:
                if (arr[j] > arr[j + 1]) {
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }

        }

        for (int i : arr) {
            System.out.print(i+"----");
        }
    }
}

发布了51 篇原创文章 · 获赞 1 · 访问量 4753

猜你喜欢

转载自blog.csdn.net/qq_44750696/article/details/104891510