標籤:print cep algorithm argument 測試 ack empty 第一個 ase
package com.java.base.sort.algorithm;/** * 冒泡排序 * * <p>演算法思路: * * <p>1.從數列第一個數開始,比較每相鄰的兩個數, 將較大(或較小)數交換至後面,直到將最大的數交換到數列最後 * * <p>2.再迴圈第一步直到數列中只剩下第一個數 * * 演算法複雜度:O(n2) * 穩定性:穩定 * * @author lxy */public class BubbleSort { /** * 交換 */ private static void swap(int[] array, int m, int n) { int tmp = array[m]; array[m] = array[n]; array[n] = tmp; } /** * 冒泡排序:9,8,11,17,12,2,4,5,20,3,1 */ public static int[] bubbleSort(int[] array) { if (array == null || array.length == 0) { throw new IllegalArgumentException("array must be not empty!"); } if (array.length == 1) { return array; } for (int i = array.length - 1; i > 0; i--) { for (int j = 0; j < i; j++) { if (array[j] > array[j + 1]) { swap(array, j, j + 1); } } } return array; } /** * 測試 */ public static void main(String[] args) { int[] array = {9, 8, 11, 17, 12, 2, 4, 5, 20, 3, 1}; System.out.println("冒泡排序前:"); for (int i = 0; i < array.length; i++) { System.out.print(array[i]); System.out.print(","); } array = BubbleSort.bubbleSort(array); System.out.println("\n冒泡排序後:"); for (int i = 0; i < array.length; i++) { System.out.print(array[i]); System.out.print(","); } }}
執行結果:
冒泡排序前:9,8,11,17,12,2,4,5,20,3,1,冒泡排序後:1,2,3,4,5,8,9,11,12,17,20,
排序演算法——冒泡排序