冒泡排序( Bubble Sort)是一种简单的排序算法。它重复访问要数列, 一次比较两个元素,如果他们的顺序错误就把交换过来。访问数列工作是 一次比较两个元素,如果他们的顺序错误就把交换过来。访问数列工作是 一次比较两个元素,如果他们的顺序错误就把交换过来。访问数列工作是 重复地进行直到没有再需要交换的数据,也就是说该列已经排序完成。这个算 重复地进行直到没有再需要交换的数据,也就是说该列已经排序完成。这个算 重复地进行直到没有再需要交换的数据,也就是说该列已经排序完成。这个算 法的名字由来是因为越小元素会经交换慢 “浮”到数列的 顶端,像水中到数列的 顶端,像水中气泡从水底浮到面。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
public class BubbleSort { public static void main(String[] args) { int[] array = new int[]{10, 1, 9, 2, 8, 3, 7, 4, 6, 5}; bubbleSort(array); display(array); } /** * 一次比较两个元素,如果他们的顺序错误就把交换过来。访问数列工作是一次比较两个元素,如果他们的顺序错误就把交换过来。 * 访问数列工作是 一次比较两个元素,如果他们的顺序错误就把交换过来。访问数列工作是 重复地进行直到没有再需要交换的数据, * 也就是说该列已经排序完成。这个算 重复地进行直到没有再需要交换的数据,也就是说该列已经排序完成。这个算 重复地进行直 * 到没有再需要交换的数据,也就是说该列已经排序完成。这个算 法的名字由来是因为越小元素会经交换慢 “浮”到数列的 顶端, * 像水中到数列的 顶端,像水中气泡从水底浮到面。 * @param array */ public static void bubbleSort(int[] array) { int length = array.length; for (int i=0; i<length - 1; i++) { for (int j=0; j<length-1-i; j++) { if(array[j] > array[j+1]) { swap(array, j, j+1); } } display(array); System.out.println(); } } /** * 打印 */ public static void display(int[] array) { int len = array.length; StringBuilder str = new StringBuilder(""); for (int i=0; i<len; i++) { str.append(array[i] + ", "); } System.out.println(str.substring(0, str.length()-2)); } /** * 交换数组中两个元素的位置 * @param array * @param a * @param b */ private static void swap(int[] array, int a, int b) { array[a] = array[a] + array[b]; array[b] = array[a] - array[b]; array[a] = array[a] - array[b]; } }