美文网首页
01 算法-初识算法-冒泡排序

01 算法-初识算法-冒泡排序

作者: 花神子 | 来源:发表于2019-05-22 19:10 被阅读0次

冒个泡

什么是冒泡排序?

冒泡排序的英文Bubble Sort,是一种最基础的交换排序

按照冒泡排序的思想,要把相邻的元素两两比较,根据大小来交换元素的位置,过程如下:

algorithm-Bubble-Sort-1.png algorithm-Bubble-Sort-2.png algorithm-Bubble-Sort-3.png

代码实现:

双层for循环

  • 外部循环控制所有的回合,内部循环代表每一轮的冒泡处理,先进行元素比较,再进行元素交换。
    分析性能:
    其实根据视图可以看出,我们在进行第六次循环的时候数组已经是一个有序数组了,但是代码依旧会执行完第七次和第八次;这种情况下,进行判断出数列是否已经有序,并且做出标记,剩下的几轮排序就可以不必执行,提早结束工作。
/**
 * @author maozhengwei
 * @version V1.0.0
 * @description
 * @data 2019-05-22 17:18
 * @see
 **/
public class BubbleSort {

    private static void sort(int array[]) {

        for( int i = 0; i < array.length; i++) {
            for(int j = 0; j < array.length - i - 1; j++) {
                if(array[j] > array[j + 1]) {
                    int tmp = array[j];
                    array[j] = array[j +1];
                    array[j +1] = tmp;
                }
            }
        }
    }

    public static void main( String [] args) {

        int[] array = new int[] { 5 , 8 , 6 , 3 ,  9 , 2 , 1 , 7 };
        sort(array);

        System.out.println(Arrays.toString(array));
    }
}

双层for循环 优化1

进行标志位标志本轮循环是否存在元素交换位置,如果没有交换则说明数据已经有序,则退出;

/**
 * @author maozhengwei
 * @version V1.0.0
 * @description
 * @data 2019-05-22 17:18
 * @see
 **/
public class BubbleSort2 {

    private static void sort(int array[]) {

        for( int i = 0; i < array.length; i++) {
            //进行循环标记,记录每一轮是否发生变化,存在则继续,如果不进行交互则停止
            boolean flag = false;
            for(int j = 0; j < array.length - i - 1; j++) {
                if(array[j] > array[j + 1]) {
                    //进行元素交换
                    flag = true;
                    int tmp = array[j];
                    array[j] = array[j +1];
                    array[j +1] = tmp;
                }
            }
            if (!flag) {
                break;
            }
        }
    }

    public static void main( String [] args) {
        int[] array = new int[] { 5 , 8 , 6 , 3 ,  9 , 2 , 1 , 7 };
        sort(array);
        System.out.println(Arrays.toString(array));
    }
}

相关文章

  • 经典排序算法总结

    经典排序算法集锦 冒泡法 排序算法入门之冒泡排序 排序算法入门之冒泡排序优化

  • 01 算法-初识算法-冒泡排序

    冒个泡 什么是冒泡排序? 冒泡排序的英文Bubble Sort,是一种最基础的交换排序。 按照冒泡排序的思想,要把...

  • 七大排序算法之冒泡排序

    七大排序算法之冒泡排序 @(算法笔记)[排序算法, 冒泡排序, C++实现] 冒泡排序介绍 冒泡排序是七大排序算法...

  • 算法-冒泡排序

    算 法:冒泡排序算法时间复杂度: 冒泡排序算法概述 冒泡排序伪代码 冒泡排序实现 冒泡排序算法概述 冒泡排...

  • 前端算法学习-第一篇

    冒泡排序算法 冒泡排序算法是最慢的排序算法之一,也是最容易实现的排序算法。之所以叫冒泡排序是因为使用这种算法排序时...

  • iOS算法总结-冒泡排序

    iOS算法总结-冒泡排序 iOS算法总结-冒泡排序

  • python 冒泡排序和选择排序算法

    插入排序算法 冒泡排序算法

  • 带你刷leetCode冒泡排序

    01. 算法 简单说程序中的算法,就是观察规律,用代码实现逻辑。 02. 冒泡排序 冒泡排序(英语:Bubble ...

  • 基本算法——快速排序算法

    快速排序算法是对冒泡算法的改进。所以我们首先来简单的谈谈冒泡算法。 1.冒泡算法 冒泡排序(Bubble S...

  • 7.4-全栈Java笔记:三种经典算法

    冒泡排序算法 冒泡排序是最常用的排序算法,在笔试中也非常常见,能手写出冒泡排序算法可以说是基本的素养。 算法重复地...

网友评论

      本文标题:01 算法-初识算法-冒泡排序

      本文链接:https://www.haomeiwen.com/subject/wjcpzqtx.html