zoukankan      html  css  js  c++  java
  • 冒泡排序学习笔记

    冒泡排序,从名字上解读,我们来观想一个画面,就是泡泡从水底慢慢冒上来的画面,呵呵,我是很喜欢看漫画片的,想想以前看的动漫里面,鱼儿吐的泡泡是怎么样子的呀,从下往上的,而这个过程中,我们可以解读到一个点,就是从下往上的过称,每一步拆分开来就是每一次泡泡前进一步,就是当前位置到后面的一个位置,而动漫中泡泡会怎么样呀,往上的时候泡泡是慢慢变大的,放在这里就是数据和后一个数据比较,然后将大的值移动到后面(当然这里不一定一定要把大的值放在后面,也可以把小的值放在后面,具体看我们需要的是什么,这里这样说明,是为了更加方便解读以及理解)。当大的泡泡出来了,那么跳过这个泡泡代表的值,我们开始重新选出最大的泡泡,直到吐不出泡泡为止(要筛选的数组变空)。

    网络中很多的冒泡排序都是for循环嵌套实现的,很多,我今天在写的时候再想,这个如果不用for循环嵌套可以不可以,然后就实现了下面的递归类型的冒泡,在此提供出来与大家分享,如果有不妥的地方,请看了的朋友多多指点才好。

     1 package 算法.排序;
     2 
     3 /**
     4  * 冒泡排序
     5  * @author Administrator
     6  * 
     7  */
     8 public class BubbleSort {
     9     public int[] waitSortArr;
    10     
    11     public static void main(String[] args) {
    12         BubbleSort bsort = new BubbleSort();
    13         bsort.waitSortArr = new int[] {10,5,8,1,3,17,11,11,-5,6};
    14         // 执行排序
    15         bsort.sortCode(0, bsort.waitSortArr.length);
    16         // 打印排序后的结果
    17         bsort.printArr();
    18     }
    19     
    20     /**
    21      * 核心排序算法
    22      * @param nowPs 当前位置
    23      * @param scannerArrLength 扫描集合长度
    24      */
    25     public void sortCode(int nowPs, int scannerArrLength) {
    26         if (scannerArrLength == 0) {
    27             return;
    28         }
    29         if (nowPs + 1 < scannerArrLength) {
    30             adjacentCompare(nowPs);
    31             sortCode(nowPs + 1, scannerArrLength);
    32         } else {
    33             sortCode(0, scannerArrLength - 1);
    34         }
    35     }
    36     
    37     public void printArr() {
    38         for (int i=0;i<this.waitSortArr.length;i++) {
    39                System.out.print(this.waitSortArr[i]);
    40                if (i != this.waitSortArr.length - 1) {
    41                    System.out.print(" ");
    42                }
    43            }
    44     }
    45     
    46     /**
    47      * 相邻比较
    48      */
    49     private void adjacentCompare(int nowPs) {
    50         if (this.waitSortArr[nowPs] > this.waitSortArr[nowPs+1]) {
    51             int tempValue = this.waitSortArr[nowPs];
    52             this.waitSortArr[nowPs] = this.waitSortArr[nowPs+1];
    53             this.waitSortArr[nowPs+1] = tempValue;
    54         }
    55     }
    56 }
  • 相关阅读:
    Spring异步调用注解@Async的使用
    maven 打包前 Junit 测试
    windows 访问局域网共享文件
    IBM MQ 集成CXF 发送JMS 消息
    VO、DTO、DO、PO的概念、区别和用处
    myeclipse创建的项目发布不了文档
    js获取jsp上下文地址
    Maven编译时,出现找不到符号
    Cause: java.lang.ClassCastException: java.lang.String cannot be cast to org.apache.ibatis.mapping.MappedStatement
    使用IDEA从github中下载fastdfs-client-java
  • 原文地址:https://www.cnblogs.com/Grace-is-enough/p/8639727.html
Copyright © 2011-2022 走看看