相信大部分同学都已经学过数据结构与算法这门课了,并且我们可能都会发现一个现象就是我们所学过的数据结构与算法类的书籍基本都是使用 C 语言来写的,好像没见过使用 Java 写的数据结构与算法。
带着这个好奇心,我去查了下资料,国内基本找不到使用 Java 写的数据结构与算法书籍,有一本书叫《Java 数据结构与算法》,这本书的代码是使用 Java 实现的,不过这本书是国内的学者翻译国外的书籍写出来的,个人感觉这本书对于初学者来说,还是比较难理解的。
冒泡排序一种运行效率很低的排序算法,然而虽然排序效率低,确实排序入门很重的算法,因为冒泡排序的思路是最简单最容易理解的排序算法了。
1、定义:冒泡排序是一种通过两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止的交换排序。
2、实现思想:通过比较两两相邻记录的关键字,将第一个记录的关键字和第二个记录的关键字进行比较,如果后面的比前面的小则交换,然后比较第二个和第三个,依次类推。比完一个循环,最大的那个已经放到了最后的位置,这样就可以对前面N-1个数再循环比较。
下面以一群身高不等的学生为例,如下图所示:
未排序的学生
已排序的学生
BubbleSort.java
package BubbleSort; /** * * 冒泡排序实现算法 * */ public class BubbleSort { public void bubble(Integer[] data){ for(int i=0;i<data.length;i++){ for(int j=0;j<data.length-1-i;j++){ //如果后一个数小于前一个数,则两个数互相交换位置 if(data[j]>data[j+1]){ int tmp=data[j]; data[j]=data[j+1]; data[j+1]=tmp; } } } } }
Test.java
package BubbleSort; import java.util.Arrays; /** * * 测试冒泡排序 * */ public class Test { public static void main(String[] args) { Integer[] list={149,138,165,197,176,113,127,114,110}; //冒泡排序 BubbleSort bs = new BubbleSort(); bs.bubble(list); System.out.println("排序前的结果为:" + Arrays.toString(list)); System.out.print("排序后的结果为:"); for(int i=0;i<list.length;i++){ System.out.print(list[i]+" "); } } }