您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關怎么實現JAVA冒泡排序,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
1. 簡單,只需理解基本的概念,就可以編寫適合于各種情況的應用程序;2. 面向對象;3. 分布性,Java是面向網絡的語言;4. 魯棒性,java提供自動垃圾收集來進行內存管理,防止程序員在管理內存時容易產生的錯誤。;5. 安全性,用于網絡、分布環境下的Java必須防止病毒的入侵。6. 體系結構中立,只要安裝了Java運行時系統,就可在任意處理器上運行。7. 可移植性,Java可以方便地移植到網絡上的不同機器。8.解釋執行,Java解釋器直接對Java字節碼進行解釋執行。
冒泡排序(Bubble Sort),是計算機科學領域中較簡單的一種排序算法。
它重復地走訪需要進行排序的元素,依次比較兩個相鄰的元素,如果元素的順序(如從大到小、首字母從A到Z)錯誤就把元素的位置互換。
走訪元素是重復進行的,直到沒有任何相鄰位置上的元素需要交換位置,排序完成。
這個算法的名字由來是因為越大的元素會經由交換慢慢“浮”到數列的頂端(升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名“冒泡排序”。
光看理論可能會有些迷糊,沒有關系,接下來我們詳細學習一下冒泡排序究竟是如何比較,又是如何排序的~
排序思路
相鄰比較,從小到大排序,如果小的就往前換
I代表了從頭到尾遍歷循環數據
實現冒泡排序
創建類: BubbleSort.java
package cn.tedu.array;import java.util.Arrays;/**本類用來完成冒泡排序*/public class TestBubbleSort { public static void main(String[] args) { //1.創建一個無序的數組 int[] a = {27,96,73,25,21}; //2.調用method()完成排序 int[] newA = method(a); System.out.println("排序完畢:"+Arrays.toString(newA)); } public static int[] method(int[] a) { //1.外層循環,控制比較的輪數,假設有n個數,最多比較n-1次 //開始值:1 結束值:<= a.length-1 變化:++ //控制的是循環執行的次數,比如5個數,最多比較4輪,<= a.length-1,最多取到4,也就是[1,4]4次 for(int i = 1 ; i <= a.length-1 ; i++) { System.out.println("第"+i+"輪:"); //2.內層循環:相鄰比較+互換位置 for(int j=0; j < a.length-i ; j++) { //相鄰比較,a[j]代表的就是前一個元素,a[j+1]代表的就是后一個元素 if(a[j] > a[j+1]) { //交換數據 int t = a[j]; a[j] = a[j+1]; a[j+1] = t; //System.out.println("第"+(j+1)+"次比較交換后:"+Arrays.toString(a)); } } System.out.println("第"+i+"輪的結果:"+Arrays.toString(a)); } return a;//把排序好的數組a返回 }}
其實我們還可以對現有的排序做優化:
優化1:前面幾輪排序產生的最大值不需要參與后幾輪的比較,執行過幾輪就會產生幾個值不需要參與比較 , i 輪產生 i 個值,所以需要 - i
優化2:我們要設置一個量,這個量用來檢測在當前這一輪的相互比較中究竟有沒有發生元素的互換位置,如果發生了互換,說明順序還沒排好,flag就改成true,進行下一輪比較,但是如果在當前輪,所有元素都進行了相互比較,并沒有互換位置,這就說明順序已經排好序了,無需下一輪比較,直接return結束方法即可
關于“怎么實現JAVA冒泡排序”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。