Java学习——排序算法之冒泡排序

Java学习——排序算法之冒泡排序

排序算法有很多,我们今天来学习其中的一种,冒泡排序

  • 那么,什么是冒泡排序呢?

百度百科是中这样解释的
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

  • 看了这么多,那么冒泡排序到底是是怎么样排序的呢?

我们来看一下冒泡排序的原理图就很清晰了:
冒泡排序原理图

  • 了解了冒泡排序的原理之后,我们就来看下代码实现:

public class Test {
    /*
       冒泡排序
     */
    public static void main(String[] args) {
        //定义一个int类型的数组
        int[] arr = {5,3,1,8,2};

        /*
         *排序
         *外层循环控制轮数,我们在图中分析得出,一共是数组中元素个数-1轮,
         *所以这里是arr.length-1
         */
        for (int i = 0; i < arr.length-1; i++) {
            /*
             * 里层循环控制排序,
             * 当第一轮时:两两比较至最后以个下标处,即arr.length-1-0
             * 第二轮时:比较至arr.length-1-1处
             * 第三轮时:比较至arr.length-1-2处
             * 第四轮时:比较至arr.length-1-3处
             * 所以:j<arr.length-1-i
             */
            for (int j = 0; j < arr.length-1-i; j++) {
                //在比较时,如果前面的数大于后面的数,大的往后放
                if (arr[j]>arr[j+1]){
                    //定义一个临时变量,用来交换两个值
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }


        //排序完成之后,使用Arrays打印数组中的元素
        System.out.println(Arrays.toString(arr));
    }
}


/*
 *      输出结果:[1, 2, 3, 5, 8]
 */

猜你喜欢

转载自blog.csdn.net/qq_43411550/article/details/89883946