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

2019-05-22  本文已影响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));
    }
}
上一篇下一篇

猜你喜欢

热点阅读