這篇文章主要介紹“Java冒泡排序實現代碼怎么寫”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Java冒泡排序實現代碼怎么寫”文章能幫助大家解決問題。
何為冒泡排序
冒泡:就像氣泡從水中冒出來一樣
在冒泡排序中,最小數或最大數取決于您是按升序還是降序對數組進行排序,向上冒泡到數組的開頭或結尾。
算法描述:
比較相鄰的元素。如果第一個比第二個大,就交換它們兩個;
對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最后一對,這樣在最后的元素應該會是最大的數;
針對所有的元素重復以上的步驟,除了最后一個;
重復步驟1~3,直到排序完成。
如果兩個元素相等,不會再交換位置,所以冒泡排序是一種穩定排序算法。
代碼實現:
數組排序
????/* ???????對數組a中的元素進行排序 ????*/ ????public?static?void?sort(Comparable[]?a){ ????????for(int?i=a.length-1;i>0;i--){ ????????????for(int?j=0;j<i;j++){ ????????????????//{6,5,4,3,2,1} ????????????????//比較索引j和索引j+1處的值 ????????????????if?(greater(a[j],a[j+1])){ ????????????????????exch(a,j,j+1); ????????????????} ????????????} ????????} ????}
比較v元素是否大于w元素
????private?static??boolean?greater(Comparable?v,Comparable?w){ ????????return?v.compareTo(w)>0; ????}
數組元素i和j交換位置
????private?static?void?exch(Comparable[]?a,int?i,int?j){ ????????Comparable?temp; ????????temp?=?a[i]; ????????a[i]=a[j]; ????????a[j]=temp; ????}
排序類
????public?static?void?bubbleSort(int[]?data)?{ ????????int?arrayLength?=?data.length; ????????for?(int?i?=?1;?i?<?arrayLength;?i++)?{//第i次排序 ????????????for?(int?j?=?0;?j?<?arrayLength?-?i;?j++)?{//從索引為j的數開始 ????????????????if?(data[j]?>?data[j?+?1])?{?//相鄰元素兩兩對比 ????????????????????int?temp?=?data[j?+?1];??//?元素交換 ????????????????????data[j?+?1]?=?data[j]; ????????????????????data[j]?=?temp; ????????????????} ????????????} ????????????System.out.println("第"?+?i?+?"次排序:\n"?+?java.util.Arrays.toString(data)); ????????} ????}
完整代碼:
public?class?BubbleSort?{ ????public?static?void?bubbleSort(int[]?data)?{ ???????? ????????int?arrayLength?=?data.length; ???????? ????????for?(int?i?=?1;?i?<?arrayLength;?i++)?{//第i次排序 ???????? ????????????for?(int?j?=?0;?j?<?arrayLength?-?i;?j++)?{//從索引為j的數開始 ???????? ????????????????if?(data[j]?>?data[j?+?1])?{?//相鄰元素兩兩對比 ???????? ????????????????????int?temp?=?data[j?+?1];??//?元素交換 ???????? ????????????????????data[j?+?1]?=?data[j]; ???????? ????????????????????data[j]?=?temp; ???????? ????????????????} ???????? ????????????} ???????? ????????????System.out.println("第"?+?i?+?"次排序:\n"?+?java.util.Arrays.toString(data)); ???????? ????????} ???????? ????} ???????? ????public?static?void?main(String[]?args)?{ ???????? ????????int[]?data?=?{3,?44,?38,?5,?47,?15,?36,?26,?27,?2,?46,?4,?19,?50,?48}; ???????? ????????System.out.println("排序之前:\n"?+?java.util.Arrays.toString(data)); ???????? ????????bubbleSort(data); ???????? ????????System.out.println("排序之后:\n"?+?java.util.Arrays.toString(data)); ???????? ????} ???????? }
排序之前:
[3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48]
第1次排序:
[3, 38, 5, 44, 15, 36, 26, 27, 2, 46, 4, 19, 47, 48, 50]
第2次排序:
[3, 5, 38, 15, 36, 26, 27, 2, 44, 4, 19, 46, 47, 48, 50]
第3次排序:
[3, 5, 15, 36, 26, 27, 2, 38, 4, 19, 44, 46, 47, 48, 50]
第4次排序:
[3, 5, 15, 26, 27, 2, 36, 4, 19, 38, 44, 46, 47, 48, 50]
第5次排序:
[3, 5, 15, 26, 2, 27, 4, 19, 36, 38, 44, 46, 47, 48, 50]
第6次排序:
[3, 5, 15, 2, 26, 4, 19, 27, 36, 38, 44, 46, 47, 48, 50]
第7次排序:
[3, 5, 2, 15, 4, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]
第8次排序:
[3, 2, 5, 4, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]
第9次排序:
[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]
第10次排序:
[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]
第11次排序:
[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]
第12次排序:
[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]
第13次排序:
[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]
第14次排序:
[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]
排序之后:
[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]
Process finished with exit code 0
關于“Java冒泡排序實現代碼怎么寫”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注***行業資訊頻道,小編每天都會為大家更新不同的知識點。