冒泡排序(Bubblesort)之Java实现
2013-12-04 17:54
363 查看
冒泡排序算法介绍
冒泡排序比插入排序更简单,把最大的元素逐步推到最高位(当前须处理子数组的最高位)。依我的理解,冒泡排序是一个一层层筑顶的过程。顶筑好了,排序也就好了。冒泡排序的最坏运行时间是O(n2),效率和插入排序一样。冒泡排序算法Java实现
如《插入排序(Insertsort)之Java实现》一样,先实现一个数组工具类。代码如下:public class ArrayUtils { public static void printArray(int[] array) { System.out.print("{"); for (int i = 0; i < array.length; i++) { System.out.print(array[i]); if (i < array.length - 1) { System.out.print(", "); } } System.out.println("}"); } public static void exchangeElements(int[] array, int index1, int index2) { int temp = array[index1]; array[index1] = array[index2]; array[index2] = temp; } }
逐步选取n-1到1(Java里面数组以0开始标记),分别作为第n,n-1,...,2层顶,第2层顶筑好了之后,只剩下一个比它小的元素,排序结束。每个顶的筑成都从位置0开始,依次和下一位置的元素比较,如果比下一位大,就交换它俩的位置。冒泡排序的Java实现以及测试代码如下:
public class BubbleSort { public static void main(String[] args) { int[] array = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2, -3 }; System.out.println("Before sort:"); ArrayUtils.printArray(array); bubbleSort(array); System.out.println("After sort:"); ArrayUtils.printArray(array); } public static void bubbleSort(int[] array) { if (array.length <= 1) { return; } int size = array.length; for (int i = size - 1; i > 0; i--) { for (int j = 0; j < i; j++) { if (array[j] > array[j + 1]) { ArrayUtils.exchangeElements(array, j, j + 1); } } } } }
相关文章推荐
- Java开发中的23种设计模式详解
- Android:在Eclipse下开发android应用产生的问题及解决方法
- java读取大文件简单实例
- Eclipse user Library的使用
- Java 异步方法转同步
- Java Date and Time系列(六)- java.util.TimeZone介绍
- eclipse启动失败的是java vm失败解决方法
- eclipse启动失败的是java vm失败解决方法
- 研读Java代码必须掌握的Eclipse快捷键
- ubuntu10.04下安装Eclipse
- java导入导出excel操作(jxl)
- JAVA多线程的问题以及处理【转】
- Thinking in Java:对象初始化顺序
- ubuntu 安装 JDK
- Struts2整合Spring方法及原理
- struts配置文件中如何从一个package的action跳到另一个package中的某个action
- 利用JMX统计远程JAVA进程的CPU和Memory
- JAVA断点续传
- Java 多线程解析
- java中堆(stack)和栈(heap)的区别