目的:理解演算法 深化演算法
氣泡排序:
直接上**好於文字
乙個冒泡例項
45,67,23,88,21,6,99
// 第一輪 6次
// 45 67 23 88 21 6 99
// 45 23 67 88 21 6 99
// 45 23 67 88 21 6 99
// 45 23 67 21 88 6 99
// 45 23 67 21 6 88 99
// 45 23 67 21 6 88 99
// 第二輪 6次
// 23 45 67 21 6 88 99
// 23 45 67 21 6 88 99
// 23 45 21 67 6 88 99
// 23 45 21 6 67 88 99
// 23 45 21 6 67 88 99
// 23 45 21 6 67 88 99
// 第三輪 6次
// 23 45 21 6 67 88 99
// 23 21 45 6 67 88 99
// 23 21 6 45 67 88 99
// 23 21 6 45 67 88 99
// 23 21 6 45 67 88 99
// 23 21 6 45 67 88 99
// 第四輪 6次
// 21 23 6 45 67 88 99
// 21 6 23 45 67 88 99
// 21 6 23 45 67 88 99
// 21 6 23 45 67 88 99
// 21 6 23 45 67 88 99
// 21 6 23 45 67 88 99
// 第五輪 6次
// 6 21 23 45 67 88 99
// 6 21 23 45 67 88 99
// 6 21 23 45 67 88 99
// 6 21 23 45 67 88 99
// 6 21 23 45 67 88 99
// 6 21 23 45 67 88 99
// 第六輪 6次(這個第6輪即使後面已經成型了 它還是按照程式走一遍)
// 6 21 23 45 67 88 99
// 6 21 23 45 67 88 99
// 6 21 23 45 67 88 99
// 6 21 23 45 67 88 99
// 6 21 23 45 67 88 99
// 6 21 23 45 67 88 99
上**(基礎型)
1上**(優化1):氣泡排序:23
49091
9293
1 氣泡排序優化://這裡的i就是為了減少比較次數的,通過紅色數字可以看出,每一輪下來,其實紅色部分是不會再進行比較的,因為他已經從大到小排了,如果是基礎版,必須得走,優化後,紅色的那部分無需再進行比較.每輪比較少比較一次。(每一輪都會比較出乙個最大值,然後後一輪沒有必要再比較了,所以沒比較一輪,就少比較一次。。。) j2
34124
125126
127
次數=n(n-1)/2
上**(優化2):
1氣泡排序優化2
2做乙個判斷
3如果在比較的時候 兩兩不發生比較了 就退出迴圈 45
6141
142143
144
這裡加了判斷後可以減少外層迴圈比如 排序123
基礎排序為2輪4次
-i排序為2輪3次(它只捨去了第二輪迴圈的第二次比較)
bool判斷的話為:1輪2次 因為它進行一輪2次比較後發現下一輪沒有可比較的了 直接退出迴圈 輸出排序
氣泡排序 氣泡排序演算法優化
常用的排序演算法主要包括 1 插入排序 直接插入排序 希爾排序 2 交換排序 氣泡排序 快速排序 3 選擇排序 簡單選擇排序 堆排序快速排序 4 歸併排序其中,氣泡排序算是最簡單的一種排序演算法 public class bubble int temp 0 for int i 0 iarr j 1 ...
氣泡排序原理及優化實現 JS
假設陣列中有n個數,比較相鄰的兩項,如果前者大於後者,就把兩個數交換位置。那麼第一輪過後就可以選出乙個最大的數放在最後面 經過n 1 陣列的length 1 輪,就完成了所有數的排序。var arr 9 1,5 8,3 7 function bubblesort arr return arr 1,3...
優化氣泡排序
氣泡排序 bubble sort 重複遍歷需要排序的數列,依次比較兩個元素,如果順序錯誤就進行交換,直到不再需要交換為止。演算法步驟如下 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。針對所有的元...