国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

冒泡排序(Bubble Sort)

2019-11-08 03:12:20
字體:
來源:轉載
供稿:網友

1、概述

冒泡排序(Bubble Sort),是一種計算機科學領域的較簡單的排序算法。這個算法的名字由來是因為越大的元素會經由交換慢慢“浮”到數列的頂端,故名。冒泡排序分為很多輪,每一輪都會將當前比較的最大的數放在右側,不停地自右向左堆積。

2、算法原理

比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最后一對。在這一點,最后的元素應該會是最大的數。從前面輪次產生的堆積在右側的每輪的最大的元素與當前輪次所有元素無關,當前輪次只比較剩余待排序的元素。持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。

附圖:

這里寫圖片描述

3、算法分析

①時間復雜度

若文件的初始狀態是正序的(如:1,2,3,4,5),一趟掃描即可完成排序。所需的關鍵字比較次數C和記錄移動次數M均達到最小值,即:Cmin = n - 1(至少要進行n - 1次比較,n為元素的個數),Mmin = 0。

因此,冒泡排序最好的時間復雜度為O(n)。

若初始文件是反序的,需要進行n-1趟排序。每趟排序要進行n-i次關鍵字的比較(1≤i≤n-1),且每次比較都必須移動記錄三次來達到交換記錄位置。在這種情況下,比較和移動次數均達到最大值:O(n2)

冒泡排序的最壞時間復雜度為:O(n2)

冒泡排序的平均時間復雜度為:O(n2)

這在所有排序算法中算是效率較低的排序算法。

②算法穩定性

冒泡排序就是把小的元素往前調或者把大的元素往后調。比較是相鄰的兩個元素比較,交換也發生在這兩個元素之間。所以,如果兩個元素相等,我想你是不會再無聊地把他們倆交換一下的;如果兩個相等的元素沒有相鄰,那么即使通過前面的兩兩交換把兩個相鄰起來,這時候也不會交換,所以相同元素的前后順序并沒有改變,所以冒泡排序是一種穩定排序算法。

4、實例(java

/** * @author Hanlin Wang *///冒泡排序原理:每輪比較中,將最大的元素放置在最底部(最右側)。往右側堆積每輪排序的最大值。public class BubbleSort { public static void main(String[] args) { //創建數據 int[] data = {4,58,65,24,12,36,87,2,15,26,33,7}; //冒泡排序 BubbleSort.sort(data); } //定義冒泡排序 public static void sort(int[] data){ for ( int i = 0;//確定排序輪數起點 i < data.length - 1;//確定排序輪數 i++) {//完成一輪排序之后,輪次++ for ( int j = 0;//確定每輪比較起點 j < data.length - i - 1;//控制每輪的排序次數 j++) {//排序一次,j++ if (data[j] > data[j+1]) { int tmp = data[j]; data[j] = data[j+1]; data[j+1] = tmp; } } //打印本輪結果 String txt = ""; for (int j : data) { txt += j + ","; } System.out.運行結果:

第1輪的排序結果為: 4,58,24,12,36,65,2,15,26,33,7,87

第2輪的排序結果為: 4,24,12,36,58,2,15,26,33,7,65,87

第3輪的排序結果為: 4,12,24,36,2,15,26,33,7,58,65,87

第4輪的排序結果為: 4,12,24,2,15,26,33,7,36,58,65,87

第5輪的排序結果為: 4,12,2,15,24,26,7,33,36,58,65,87

第6輪的排序結果為: 4,2,12,15,24,7,26,33,36,58,65,87

第7輪的排序結果為: 2,4,12,15,7,24,26,33,36,58,65,87

第8輪的排序結果為: 2,4,12,7,15,24,26,33,36,58,65,87

第9輪的排序結果為: 2,4,7,12,15,24,26,33,36,58,65,87

第10輪的排序結果為: 2,4,7,12,15,24,26,33,36,58,65,87

第11輪的排序結果為: 2,4,7,12,15,24,26,33,36,58,65,87

GIF圖:

這里寫圖片描述


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 文水县| 鄄城县| 孝义市| 岑溪市| 沛县| 阳谷县| 南郑县| 外汇| 正安县| 德格县| 枞阳县| 威信县| 海淀区| 金门县| 苗栗县| 乌鲁木齐县| 明水县| 镶黄旗| 寿阳县| 剑河县| 南投市| 丹江口市| 汶上县| 尼木县| 黑龙江省| 黑山县| 金昌市| 襄樊市| 抚松县| 崇州市| 敦煌市| 庆安县| 通江县| 攀枝花市| 渝北区| 木兰县| 临泉县| 吉木乃县| 德昌县| 墨江| 保德县|