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 }
  • 相关阅读:
    浅析影响一个网站的因素
    23种常用设计模式的UML类图
    各版本IE兼容问题,IE6,IE7,IE8,IE9,IE10,IE11
    47种常见的浏览器兼容性问题大汇总
    5个Sublime Text 的插件推荐
    网页设计师神器,快速生成网站配色、字型等风格的工具——Stylify Me
    免费的高分辨率图库——re:splashed 可用做网页背景、设计或桌面壁纸
    MySQL(18):Select- subquery子查询
    MySQL(17):Select-union(联合查询)使用注意事项
    MySQL(16):Select-union(联合查询)
  • 原文地址:https://www.cnblogs.com/Grace-is-enough/p/8639727.html
Copyright © 2011-2022 走看看