简单优化冒泡排序

Posted Java算法编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单优化冒泡排序相关的知识,希望对你有一定的参考价值。

一. 排序算法的介绍

    

    排序也称排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程。


二. 排序的分类

    

    1) 内部排序:

        指将需要处理的所有数据都加载到内部存储器中进行排序。

    2) 外部排序法:

        数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。

    3) 常见的排序算法分类(见下图)


三. 冒泡排序介绍 


      冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。

    

    优化 : 因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下没有进行过交换,就说明序列有序,因此要在排序过程中设置  一个标志flag判断元素是否进行过交换。从而减少不必要的比较。 (这里说的优化,可以在冒泡排序写好后,在进行)


四. 代码实现


1)初始化变量

        //创建数组
        int arr[] = {39, -11020};

        //临时变量,交换时使用
        int temp = 0;

        //标识符,表示数字是否交换过(如果一趟中没有交换则代表已经排好顺序了)
        //优化的标志
        boolean flag = false;


2) 排序

        //比较几轮
        for (int i = 0; i < arr.length - 1; i++) {
            //每一轮比较的次数
            for (int j = 0; j < arr.length - 1 - i; j++) {
                //判断
                if (arr[j] > arr[j + 1]){
                    //执行到这里,则代表有数据需要交换
                    flag = true;
                    //交换数据
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
            //输出
            System.out.println("第"+ (i + 1) +"趟排序");
            System.out.println(Arrays.toString(arr));

            //判断这趟排序中是否一次都没交换过数据
            if (!flag){
                //退出大循环
                break;
            }else {
                //重置flag,进行下一次判断
                flag = false;
            }
        }


总结: 冒泡排序是很简单的排序方法,这个简单优化可以减少一些无效的比较,提高一下代码运行时间.


以上是关于简单优化冒泡排序的主要内容,如果未能解决你的问题,请参考以下文章

关于冒泡排序的最简单方法和进一步的优化

简单优化冒泡排序

如何优化冒泡排序?

冒泡排序算法及其优化

冒泡排序,算法以及优化

冒泡排序及其优化