电竞比分网-中国电竞赛事及体育赛事平台

分享

逗比講算法:什么是冒泡排序?

 長(zhǎng)沙7喜 2019-08-20

通過上邊的圖
大家也可以很清楚看到了
準(zhǔn)備要做大事情了!

死不死上邊紅黑相間似曾相似?
看不懂的可谷歌翻譯一下
可見一般???!
正事預(yù)警!

本文將在此公眾號(hào)上通過一個(gè)個(gè)
鮮活生動(dòng)的情景故事和漫畫
講解算法知識(shí)和逗比故事

大約每周一篇
好了!下面介紹一下漫畫人物
阿廣的老板
(大熊貓飾)
阿廣
(蘑菇頭飾)

從夢(mèng)中驚醒
看到老板的面孔~
瞬間清醒了許多!回答道!
初始狀態(tài)
第一輪遍歷

第二輪遍歷
第三輪遍歷

第四輪遍歷
第五輪遍歷
不用多講解
只要智商正常
多看幾遍動(dòng)畫
應(yīng)該問題不大!了?
下面剖析一下代碼
public void bubbleSort(int[] list) {
int temp = 0; // 用來交換的臨時(shí)數(shù)
// 要遍歷的次數(shù)
for (int i = 0; i < list.length - 1; i++) {
// 從后向前依次的比較相鄰兩個(gè)數(shù)的大小,遍歷一次后,把數(shù)組中第i小的數(shù)放在第i個(gè)位置上
for (int j = list.length - 1; j > i; j--) {
// 比較相鄰的元素,如果前面的數(shù)大于后面的數(shù),則交換
if (list[j - 1] > list[j]) {
temp = list[j - 1];
list[j - 1] = list[j];
list[j] = temp;
}
}
System.out.format('第 %d 趟: ', i);
printAll(list);
}
}
對(duì)冒泡排序常見的改進(jìn)方法是加入標(biāo)志性變量exchange,用于標(biāo)志某一趟排序過程中是否有數(shù)據(jù)交換。
如果進(jìn)行某一趟排序時(shí)并沒有進(jìn)行數(shù)據(jù)交換,則說明所有數(shù)據(jù)已經(jīng)有序,可立即結(jié)束排序,避免不必要的比較過程。

改進(jìn)代碼如下:
// 對(duì) bubbleSort 的優(yōu)化算法
public void bubbleSort_2(int[] list) {
int temp = 0; // 用來交換的臨時(shí)數(shù)
boolean bChange = false; // 交換標(biāo)志
// 要遍歷的次數(shù)
for (int i = 0; i < list.length - 1; i++) {
bChange = false;
// 從后向前依次的比較相鄰兩個(gè)數(shù)的大小,遍歷一次后,把數(shù)組中第i小的數(shù)放在第i個(gè)位置上
for (int j = list.length - 1; j > i; j--) {
// 比較相鄰的元素,如果前面的數(shù)大于后面的數(shù),則交換
if (list[j - 1] > list[j]) {
temp = list[j - 1];
list[j - 1] = list[j];
list[j] = temp;
bChange = true;
}
}
// 如果標(biāo)志為false,說明本輪遍歷沒有交換,已經(jīng)是有序數(shù)列,可以結(jié)束排序
if (false == bChange)
break;
System.out.format('第 %d 趟: ', i);
printAll(list);
}
}

(雙擊點(diǎn)看查看大圖)

————

編輯 ∑Gemini

 來源:視學(xué)算法

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多