本著樸素的原則菩收,筆者準(zhǔn)備記錄的第一個(gè)算法是入門級(jí)也是最簡單、最容易實(shí)現(xiàn)的算法——冒泡排序
冒泡排序呢,是交換排序的一種,什么是交換排序呢连茧,其實(shí)很好理解哈,就可以簡單的理解為:每次比較兩個(gè)元素恶迈,然后判斷兩個(gè)元素是否符合排序規(guī)則款票,如果不符合即交換,交換后二者的相對(duì)位置即可確認(rèn)枷颊。
換個(gè)說法
對(duì)于一個(gè)size=n的數(shù)組戳杀,進(jìn)行交換排序:
每進(jìn)行一次交換,那么就能確定兩個(gè)元素的相對(duì)位置夭苗。
冒泡排序信卡,對(duì)于一輪交換來說,如下圖:
第一輪题造,依次兩兩比較傍菇,如果不符合排序規(guī)則,直接交換位置界赔,
這樣一直比較到最后兩個(gè)元素丢习,能夠確定最后一個(gè)元素為最大值,
那就能選擇出最大的元素淮悼,放到了第n個(gè)位置咐低。
接下來只要對(duì)剩下的n-1個(gè)元素進(jìn)行下一次冒泡即可~
public void bubbleSort(int[] arrays, int start, int end) {
if (start == end) {
return;
}
for (int i = end; i >= start + 1; i--) {
for (int j = start; j < i; j++) {
if (arrays[j] > arrays[j + 1]) {
swap(arrays, j, j + 1);
}
}
}
}
最后談一下冒泡排序的算法復(fù)雜度,我們只要來看比較的次數(shù):
第一輪:n-1次比較
第二輪:n-2次比較
……
第n-1輪:1次比較
綜上:
下一篇會(huì)繼續(xù)展開交換排序的另一個(gè)算法敛惊,也是10大排序中最容易被問被手?jǐn)]代碼的算法——快速排序~