排序算法之冒泡排序

  1. 基本介绍:

    冒泡排序(Bubble Sorting)的基本思想:通过对待排序序列从前向后(从下表较小的元素开始),依次比较相邻元素的值,如发现逆序则交换,使值较大的元素逐渐从前移向后面。

    因为在排序过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此对序列是否有序首先要做判断。(就是最冒泡排序的优化)

  2. 冒泡排序的规则

    1. 一共进行arr.length-1次大的循环

    2. 每一趟排序的次数都在逐渐减少

    3. 如果发现在某趟排序中数组已经有序,就可以提前结束(冒泡排序的优化

  3. 冒泡排序过程演示 
  4. 对整个冒泡算法的理解,通过一个例子
  5.  

     下面是具体代码演示

  6. package com.gcy.sort;

    import java.util.Arrays;

    /**
    * 冒泡排序
    *
    * @author Administrator
    *
    */
    public class BubbleSort {

    public static void main(String[] args) {
    // 定义需要排序的数组
    int[] array = { 3, 9, -1, 10, };
    System.out.println("未排序的数组:" + Arrays.toString(array));

    int[] arr = bubbleSory(array);
    System.out.println("排完序的数组:" + Arrays.toString(arr));

    // 定义临时变量
    /*
    * int temp = 0; for (int i = 0; i < array.length - 1; i++) { for (int j = 0; j
    * < array.length - 1 - i; j++) { if (array[j] > array[j + 1]) { temp =
    * array[j]; array[j] = array[j + 1]; array[j + 1] = temp; } }
    * System.out.println("第"+(i+1)+"趟排序");
    * System.out.println(Arrays.toString(array));
    *
    * }
    */
    }

    public static int[] bubbleSory(int[] array) {

    // 定义临时变量
    int temp = 0;
    //设置一个表示不变量,表示是否进行过交换
    boolean flag=false;
    for (int i = 0; i < array.length - 1; i++) {
    for (int j = 0; j < array.length - 1 - i; j++) {
    if (array[j] > array[j + 1]) {
    flag=true;
    temp = array[j];
    array[j] = array[j + 1];
    array[j + 1] = temp;
    }
    }
    System.out.println("第"+(i+1)+"趟排序");
    System.out.println(Arrays.toString(array));

    if(!flag) {
    break;
    }else {
    flag=false;
    }
    }

    return array;
    }

    }

  7. 在这个代码中算法是经过优化的,就是当在某一趟已经排出了顺序,后面的就不用再走,有兴趣的可以自己试一试。我在这给一个案例[1,2,3,4,5]输入这个本来就有序的数组,看一下会发生什么结果,上面彩色标出的就是代码的优化,刚开始理解可以不写那部分代码
  8.  

     

posted @ 2020-10-04 12:06  IT特工  阅读(1200)  评论(0编辑  收藏  举报