這篇文章跟大家介紹新手小白學JAVA新手小白學如何學JAVA冒泡排序的方法。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。
新手小白學如何學JAVA冒泡排序(Bubble Sort),是電腦科學領域中較簡單的一種排序演算法。
它重複地走訪需要進行排序的元素,依序比較兩個相鄰的元素,如果元素的順序(如從大到小、首字母從A到Z)錯誤就把元素的位置互換。
走訪元素是重複進行的,直到沒有任何相鄰位置上的元素需要交換位置,排序完成。
這個演算法的名字由來是因為越大的元素會經由交換慢慢「浮」到數列的頂端(升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名「新手小白學如何學JAVA冒泡排序」。
光看理論可能會有些迷糊,沒有關係,接下來我們詳細學習一下新手小白學如何學JAVA冒泡排序究竟是如何比較,又是如何排序的~
排序思路
相鄰比較,從小到大排序,如果小的就往前換
I代表了從頭到尾遍歷循環資料
實作新手小白學如何學JAVA冒泡排序
建立類別: BubbleSort.java
package cn.tedu.array;import java.util.Arrays;/**本类用来完成新手小白學如何學JAVA冒泡排序*/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基礎教學
以上是新手小白學如何學JAVA冒泡排序的詳細內容。更多資訊請關注PHP中文網其他相關文章!