Java 十大排序算法之冒泡排序刨析
冒泡排序原理
①比較相鄰的元素,如果前一個元素比後一個元素大,則交換這兩個元素的位置
②對每一對相鄰的元素循環上面的步驟,最終最後面的元素就是最大值
冒泡排序API設計
類名 | Bubble |
構造方法 | Bubble:創建Bubble對象 |
成員方法 |
1.public static void sort(Comparable[] a):對數組內元素進行排序 2.private static void greater(Comparable v,Comparable w);判斷v是否大於w 3.private static void exchange(Comparable[] a,int x,int y):交換a數組中,索引x和索引y處的值 |
冒泡排序的代碼實現
public class Bubble { //對數組a進行排序 public static void sort(Comparable[] a){ for(int i=a.length-1;i>0;i--){ for(int j=0;j<i;j++){ if(greater(a[j],a[j+1])){ exchange(a,j,j+1); } } } } //比較v元素是否大於w元素 private static boolean greater(Comparable v,Comparable w){ return v.compareTo(w)>0; } //數組元素x和y交換位置 private static void exchange(Comparable[] a,int x,int y){ Comparable t=a[x]; a[x]=a[y]; a[y]=t; } } //測試代碼 class Test{ public static void main(String[] args) { Integer[] a={4,5,6,3,2,1}; Bubble.sort(a); System.out.println(Arrays.toString(a)); } }
測試結果:
冒泡排序的時間復雜度分析
冒泡排序雖然采用瞭雙層for循環遍歷,但是真正完成排序的代碼在內循環中,所以主要分析內層循環體的執行次數即可
在最壞的情況下。即數組為{6,5,4,3,2,1}的逆序
元素的比較次數為:(N-1)+(N-2)+(N-3)+…+2+1=
((N-1)+1)*(N-1)/2=N^2/2-N/2;
元素的交換次數為:(N-1)+(N-2)+(N-3)+…+2+1=
((N-1)+1)*(N-1)/2=N^2/2-N/2;
總執行次數為:2*(N^2/2-N/2)=N^2-N;
根據大O推導法則,保留最高階項,即冒泡排序的時間復雜度為O(N^2)
到此這篇關於Java 十大排序算法之冒泡排序刨析的文章就介紹到這瞭,更多相關Java 冒泡排序內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!