算法描述:對于給定的n個(gè)記錄,從第一個(gè)記錄開始依次對相鄰的兩個(gè)記錄進(jìn)行比較,當(dāng)前面的記錄大于后面的記錄時(shí),交換位置,進(jìn)行一輪比較和交換后,n個(gè)記錄中的最大記錄將位于第n位;然后對前(n-1)個(gè)記錄進(jìn)行第二輪比較;重復(fù)該過程直到進(jìn)行比較的記錄只剩下一個(gè)為止。
javascript/273048.html">冒泡排序是非常好理解的,以從小到大排序?yàn)槔恳惠喤判蚓驼页鑫磁判蛐蛄兄凶畲笾捣旁谧詈蟆?/p>
設(shè)數(shù)組的長度為N:
(1)比較前后相鄰的二個(gè)數(shù)據(jù),如果前面數(shù)據(jù)大于后面的數(shù)據(jù),就將這二個(gè)數(shù)據(jù)交換。
(2)這樣對數(shù)組的第0個(gè)數(shù)據(jù)到N-1個(gè)數(shù)據(jù)進(jìn)行一次遍歷后,最大的一個(gè)數(shù)據(jù)就“沉”到數(shù)組第N-1個(gè)位置。
(3)N=N-1,如果N不為0就重復(fù)前面二步,否則排序完成。
以上就是冒泡排序的基本思想,按照這個(gè)定義很快就能寫出代碼。
package sorting;/** * 冒泡排序 * 平均O(n^2),最好O(n),最壞O(n^2);空間復(fù)雜度O(1);穩(wěn)定;簡單 * @author zeng * */public class BubbleSort { public static void bubbleSort(int[] a){ int n = a.length; int temp = 0; for (int i=0;i<n;i++){ for (int j=0;j<n-i-1;j++){ if(a[j]<a[j+1]){ temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } } } public static void main(String[] args){ int[] a ={49,38,65,97,76,13,27,50}; bubbleSort(a); for (int j:a) System.out.print(j+" "); }}總結(jié)
以上就是本文關(guān)于Java冒泡排序簡單實(shí)現(xiàn)的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題。如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
新聞熱點(diǎn)
疑難解答
圖片精選