本文實例講述了java數據結構與算法之冒泡排序。分享給大家供大家參考,具體如下:
前面文章講述的排序算法都是基于插入類的排序,這篇文章開始介紹交換類的排序算法,即:冒泡排序、快速排序(冒泡排序的改進)。
交換類的算法:通過交換逆序元素進行排序的方法。
冒泡排序:反復掃描待排序記錄序列,在掃描的過程中,順次比較相鄰的兩個元素的大小,若逆序就交換位置。
算法實現代碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
package exp_sort; public class BubbleSort { public static void bubble( int array[]) { boolean change = true ; for ( int i = 0 ; i < array.length && change; i++) { change = false ; for ( int j = 0 ; j < array.length - i - 1 ; j++) { if (array[j] > array[j + 1 ]) { int temp = array[j]; array[j] = array[j + 1 ]; array[j + 1 ] = temp; change = true ; } } } for ( int i = 0 ; i < array.length; i++) { System.out.print(array[i] + " " ); } System.out.println( "\n" ); } public static void main(String[] args) { // TODO Auto-generated method stub int array[] = { 38 , 62 , 35 , 77 , 55 , 14 , 35 , 98 }; bubble(array); } } |
算法分析:最好的情況是,需要排序的初始狀態是正序排列的,則一趟掃描即可完成,此時時間復雜度是O(n);最壞情況是,需要排序的初始狀態是反序的,則需要n-1趟掃描,此時時間復雜度是O(n^2),空間復雜度是O(1);該算法是一種穩定的排序方法。
希望本文所述對大家java程序設計有所幫助。