冒泡排序学习笔记

Posted 蒙恩少年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡排序学习笔记相关的知识,希望对你有一定的参考价值。

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

网络中很多的冒泡排序都是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 }

 

以上是关于冒泡排序学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

冒泡排序,插入排序,归并排序,快速排序的学习笔记

数据结构学习笔记——交换排序(冒泡排序和快速排序)

数据结构学习笔记——交换排序(冒泡排序和快速排序)

C语言学习笔记 -冒泡排序

python 学习笔记 -- 数据结构与算法 冒泡排序 Bubble sort

JavaScript新手学习笔记3——三种排序方式(冒泡排序插入排序快速排序)