氣泡排序及優化

2021-09-02 13:54:46 字數 1285 閱讀 8572

只考慮演算法的實現

public static void  version1(int array) 

}} }

如果陣列的某一部分本身就是有序的,能顯著減少迴圈的趟數

public  static void version2(int array) 

}if (flag) break;

} }

分析:我們假設在進行某趟排序時已經有序了,以boolean flag=true來標識這種假設,如果說在該趟排序判斷大小時存在數值交換,即此時還不是有序的,如果有序了則不會在判斷後進行數值交換,也就是不滿足這種假設此時將標識flag賦值為false。 如果說在該趟迴圈中,每次判斷大小都沒有進行數值交換,那說明陣列已經有序了此時不會改變flag的值  當值為true時直接跳出該趟迴圈。  

public class bubblesort ;

int b= ;

version1(a);

for (int i : a)

version2(b);

for (int i : b)

}結果:

第1趟迴圈

第1趟第1次迴圈

第1趟第2次迴圈

第1趟第3次迴圈

第1趟第4次迴圈

第1趟第5次迴圈

第1趟第6次迴圈

第2趟迴圈

第2趟第1次迴圈

第2趟第2次迴圈

第2趟第3次迴圈

第2趟第4次迴圈

第2趟第5次迴圈

第3趟迴圈

第3趟第1次迴圈

第3趟第2次迴圈

第3趟第3次迴圈

第3趟第4次迴圈

第4趟迴圈

第4趟第1次迴圈

第4趟第2次迴圈

第4趟第3次迴圈

第5趟迴圈

第5趟第1次迴圈

第5趟第2次迴圈

第6趟迴圈

第6趟第1次迴圈

1 5 6 7 8 9 23

第1趟迴圈

第1趟第1次迴圈

第1趟第2次迴圈

第1趟第3次迴圈

第1趟第4次迴圈

第1趟第5次迴圈

第1趟第6次迴圈

第2趟迴圈

第2趟第1次迴圈

第2趟第2次迴圈

第2趟第3次迴圈

第2趟第4次迴圈

第2趟第5次迴圈

1 5 6 7 8 9 23

可以看出減少了迴圈次數 在一定程度上得到了優化

氣泡排序及優化

氣泡排序的基本思路是 每次將相鄰兩個數比較,將小的調到前頭 本例按照從小到大排序 按此規律如果有n個數,則要進行n 1趟比較。在第1趟比較中要進行n 1次兩兩比較,在第 j 趟比較中要進行 n j 次兩兩比較。實現如下 include define n 10 int main for i 0 i n...

氣泡排序及優化

目錄 一 思路 二 普通寫法 三 模板寫法 四 優化一 五 優化二 六 優化三 氣泡排序 無序區,有序區 從無序區通過交換找出最大元素放到有序區前端。1 比較相鄰元素,如果第乙個比第二個大,交換他們。2 對每一對相鄰元素做同樣操作,從開始第一對倒最後一對。這步做完後,最後的元素是最大的。3 針對所有...

氣泡排序及優化

氣泡排序通常是最早接觸的一種排序 原理是 假設是按照從小到大的順序排列 每一次遍歷都會把當前的最大值歸置到應有的位置,在下一次遍歷時忽略最後的已經歸置好的,在前面未排序的部分再次重複,每一次遍歷都不能少。void bubblea int num,int size size是陣列規模 在此基礎上加乙個...