冒泡排序

给大家简单介绍一下我对冒泡排序的理解

(一)先简单介绍一下什么叫冒泡排序

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

 

(二)冒泡排序的分析过程

 给定一个数组,首先遍历一遍数组得出其长度大小:arr.length,通过如下简单的数学规律分析可知每一个元素都要进行arr.length-1-i轮次进行比较

            arr.length-1-i
      i=0(第1轮)  比3次
      i=1(第2轮)  比2次
      i=2(第3轮)  比1次
  1. 经过第一轮比较,即当i=0时,我们可以的得到此轮比较中数组中最大的数据也就是78
    i=0
      j=0 78和45比,换,45,78,56,4
      j=1 78和56比,换,45,56,78,4
      j=2 78和4比,换,45,56,4,78-----------78出来了
    

      

  2. 经过第二轮比较,即当i=1时,我们可以的得到此轮比较中数组中最大的数据也就是56
    i=1
      j=0 45和56比,不换
      j=1 56和4比,换,45,4,56,78----------56出来了
    

      

  3. 经过第三轮比较,即当i=2时,我们可以的得到此轮比较中数组中最大的数据也就是45
    i=2
      j=0 45和4比,换,4,45,56,78----------45出来了
    

      

(三)最终实现的代码如下:
package com.helly;

public class Sort {
    public static void main(String[] args) {


        int[] arr = {78, 45, 56, 4}; //升序(4,45,56,78)

        //控制轮
        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]) {
                    int t = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = t;
                }
            }
        }
        for (int i = 0; i <arr.length ; i++) {
            System.out.print(arr[i] + ",");
        }
   }
}

  

posted @ 2019-03-20 15:28  诺初  阅读(257)  评论(0编辑  收藏  举报