大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 Java數組冒泡排序

Java數組冒泡排序

更新時間:2020-11-03 17:26:53 來源:動力節點 瀏覽1304次

在Java中數組有很多常用的算法,常用的排序算法包括冒泡排序,直接選擇排序等,一般在開發中,需要對一組數組進行排序,這時候就可以使用排序算法排序。其中冒泡排序是比較常用的數組排序算法之一,冒泡排序主要是排序數組的過程總是將小數往前放,大數往后放。Java數組冒泡排序其實就是對比相鄰的值,如果滿足條件就交換值。


一、基本概念

依次比較相鄰的兩個數,將小數放在前面,大數放在后面。即在第一趟:首先比較第1個和第2個數,將小數放前,大數放后。然后比較第2個數和第3個數,將小數放前,大數放后,如此繼續,直至比較最后兩個數,將小數放前,大數放后。至此第一趟結束,將最大的數放到了最后。在第二趟:仍從第一對數開始比較(因為可能由于第2個數和第3個數的交換,使得第1個數不再小于第2個數),將小數放前,大數放后,一直比較到倒數第二個數(倒數第一的位置上已經是最大的),第二趟結束,在倒數第二的位置上得到一個新的最大數(其實在整個數列中是第二大的數)。如此下去,重復以上過程,直至最終完成排序。


二、實現思路

用二重循環實現,外循環變量設為i,內循環變量設為j。假如有n個數需要進行排序,則外循環重復n-1次,內循環依次重復n-1,n-2,...,1次。每次進行比較的兩個元素都是與內循環j有關的,它們可以分別用a[j]和a[j+1]標識,i的值依次為1,2,...,n-1,對于每一個i,j的值依次為0,1,2,...n-i 。

設數組長度為N:

1.比較相鄰的前后二個數據,如果前面數據大于后面的數據,就將二個數據交換。

2.這樣對數組的第0個數據到N-1個數據進行一次遍歷后,最大的一個數據就“沉”到數組第N-1個位置。

3.N=N-1,如果N不為0就重復前面二步,否則排序完成。


三、代碼實現

package 冒泡排序;

import java.util.Arrays;

/**

* 冒泡排序

* @author mmz

*

*/

public class BubbleSort {

public static void BubbleSort(int[] arr) {

int temp;//定義一個臨時變量

for(int i=0;i<arr.length-1;i++){ p="" 冒泡趟數<="">

for(int j=0;j<arr.length-i-1;j++){< p="">

if(arr[j+1]<arr[j]){< p="">

temp = arr[j];

arr[j] = arr[j+1];

arr[j+1] = temp;

}

}

}

}

public static void main(String[] args) {

int arr[] = new int[]{1,6,2,2,5};

BubbleSort.BubbleSort(arr);

System.out.println(Arrays.toString(arr));

}

}


四、算法分析

若記錄序列的初始狀態為"正序",則冒泡排序過程只需進行一趟排序,在排序過程中只需進行n-1次比較,且不移動記錄;反之,若記錄序列的初始狀態為"逆序",則需進行n(n-1)/2次比較和記錄移動。因此冒泡排序總的時間復雜度為O(n*n)。


五、算法優化:

冒泡排序法存在的不足及改進方法:

第一,在排序過程中,執行完最后的排序后,雖然數據已全部排序完備,但程序無法判斷是否完成排序,為了解決這一不足,可設置一個標志位flag,將其初始值設置為非0,表示被排序的表是一個無序的表,每一次排序開始前設置flag值為0,在進行數據交換時,修改flag為非0。在新一輪排序開始時,檢查此標志,若此標志為0,表示上一次沒有做過交換數據,則結束排序;否則進行排序;

package 冒泡排序;

import java.util.Arrays;

public class BubbleSort1 {

public static void BubbleSort(int[] arr) {

boolean flag = true;

while(flag){

int temp;//定義一個臨時變量

for(int i=0;i<arr.length-1;i++){ p="" 冒泡趟數,n-1趟<="">

for(int j=0;j<arr.length-i-1;j++){< p="">

if(arr[j+1]<arr[j]){< p="">

temp = arr[j];

arr[j] = arr[j+1];

arr[j+1] = temp;

flag = true;

}

}

if(!flag){

break;//若果沒有發生交換,則退出循環

}

}

}

}

public static void main(String[] args) {

int arr[] = new int[]{1,6,2,2,5};

BubbleSort.BubbleSort(arr);

System.out.println(Arrays.toString(arr));

}

}


Java數組冒泡排序就講到這里,除了冒泡排序之外,本站的Java基礎教程中還有對其他數組排序算法的講解,感興趣的小伙伴不容錯過。


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 狠狠色噜噜狠狠狠狠2018 | 成人国产精品一级毛片了 | 欧美成人综合在线 | 国产一级淫片a | 奇米影视奇米色777欧美 | 鲁一鲁中文字幕久久 | 狠狠操操 | 日韩天天操 | 四虎精品成在线播放 | 国产精品视频2021 | 久久日本精品国产精品白 | 日韩不卡视频在线观看 | 国产免费一级高清淫曰本片 | 四虎澳门永久8848在线影院 | 中文字幕2区 | a毛片毛费观看 | 日韩高清在线日韩大片观看网址 | 日韩视频二区 | 九色国产 | 国产精品久久久久久久久夜色 | 欧美日韩另类综合 | 欧美成人一区二区三区不卡 | 国产精品免费大片 | 狠狠色官网在线 | 久久伊人亚洲 | 亚洲一区二区三区免费观看 | 日本爱爱免费视频 | 久久综合色婷婷 | 日韩欧美一区二区三区在线 | 午夜精品久久久久久毛片 | 国产香港特级一级毛片 | 亚洲综合激情九月婷婷 | 中国毛片免费看 | 久久一区二区精品综合 | 视频1区 | 欧美一级毛片国产一级毛片 | 九九在线免费视频 | 欧美丰满大乳大屁股毛片 | 成人免费草草视频 | 91视频入口 | 真实偷清晰对白在线视频 |