1. 程式人生 > 實用技巧 >Android 教你如何發現 APP 卡頓

Android 教你如何發現 APP 卡頓

氣泡排序(Bubble Sorting)的基本思想

通過對待排序序列從前向後(從下標較小的元素開始),依次比較相鄰元素的值,若發現逆序則交換,使值較大的元素逐漸從前移向後部,就像水底下的氣泡一樣逐漸向上冒。
圖解:

小結:

(1) 一共進行(陣列的大小-1)次大的迴圈
(2)每一趟排序的次數在逐漸的減少
(3) 如果我們發現在某趟排序中,沒有發生一次交換, 可以提前結束氣泡排序。這個就是優化優化:

因為排序的過程中,各元素不斷接近自己的位置,如果一趟比較下來沒有進行過交換,就說明序列有序,因此要在 排序過程中設定一個標誌 flag 判斷元素是否進行過交換。從而減少不必要的比較。

程式碼實現

//將五個無序的數:3,9,-1,10,-2使用氣泡排序法將其排成一個從小到大的有序數列。

1. publicclassbubblesort{
2. publicstaticvoidmain(String[]args){
3. int[]arr={3,9,-1,10,-2};
4. System.out.println("原陣列為:"+Arrays.toString(arr));
5. bubbleSort(arr);
6. System.out.println("排序後陣列為:"+Arrays.toString(arr));
7. }
8. 
9. //氣泡排序的時間複雜度O(n^2)
10. private
staticvoidbubbleSort(int[]arr){ 11. inttemp=0;//臨時變數 12. for(inti=0;i<arr.length-1;i++){//第一層for表示幾趟 13. booleanflag=false;//標識變數,表示是否進行過交換(優化) 14. for(intj=0;j<arr.length-1-i;j++){//第二層for表示每一趟如何做 15. if(arr[j]>arr[j+1]){//如果前面的數比後面的數大,則交換 16. flag=true; 17. temp=arr[j]; 18. arr[j]=arr[j+1]; 19. arr[j+1]=temp;
20. } 21. } 22. if(!flag){//在一趟排序中,一次交換都沒有發生過 23. break; 24. } 25. } 26. } 27. }