很想直接上代碼,奈何字數有要求!
它重復地走訪過要排序的元素列,依次比較兩個相鄰的
元素,如果順序(如從大到小、首字母從Z到A)錯誤就把他們交換過來。走訪元素的工作是重復地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。
這個算法的名字由來是因為越小的元素會經由交換慢慢“浮”到數列的頂端(升序或降序排列),就如同碳酸飲料中
二氧化碳的氣泡最終會上浮到頂端一樣,故名“冒泡排序”。
1. BubbleSort.java 算法類
1 /* 2 * 冒泡排序(數據類型為int型) 3 */ 4 public class BubbleSort { 5 6 public void bubble_Sort(int[] array,int n) { 7 for(int p=n-1; p>=0; p--) { 8 int flag = 0; 9 for(int i=0; i<p; i++) { 10 if(array[i]>array[i+1]) { 11 int tmp = array[i+1]; 12 array[i+1] = array[i]; 13 array[i] = tmp; 14 flag = 1; 15 } 16 } 17 if(flag==0) { //全程無交換 18 break; 19 } 20 } 21 } 22 }
2. Test.java 測試類
1 /* 2 * 冒泡排序測試類 3 */ 4 public class Test { 5 6 public static void main(String[] args) { 7 8 int[] array = {34,8,64,51,32,21}; //初始化數組 9 10 System.out.println("原數組(未排序): "); 11 for(int i:array) { //遍歷數組 12 System.out.print(i+" "); 13 } 14 15 BubbleSort bs = new BubbleSort(); 16 bs.bubble_Sort(array, array.length); 17 18 //排序之后的數組 19 System.out.println(); 20 System.out.println("冒泡排序之后的數組: "); 21 for(int i:array) { 22 System.out.print(i+" "); 23 } 24 } 25 }
如果這篇文章對你有用的話,希望點個贊,支持一下作者,有什么更好的看法和建議歡迎評論區留言。Bye,下次見!