我理解的冒泡排序

冒泡排序:顧名思義就是氣泡從水中向外冒越來(lái)越大

基本思想:從左到右每次比較兩個(gè)相鄰的數(shù),大的往后移動(dòng),小的往前移動(dòng),這里有個(gè)易誤點(diǎn),每次向右移動(dòng)的過(guò)程中都是較大的數(shù)參與后續(xù)比較,最終的結(jié)果是得到最大的數(shù)排在最后面,要有逆向思維,他其實(shí)是從大到小排的,只不過(guò)將大數(shù)放在后面。
示例:例如一個(gè)數(shù)組[3,6,7,4,5],首先3和6比較,位置不變,然后右移一位,6和7比較仍然不變,再右移,7和4比較,7比4大,交換位置,再后移一位,7和5比較(前面一步7的位置后移一位了),7比5大,交換位置,第一輪循環(huán)下來(lái),得到的數(shù)組排序是[3,6,4,5,7],第二輪時(shí)仍然從左到右,只是沒(méi)有必要比較最后一個(gè)數(shù)了,因?yàn)樗亲畲蟮目隙ú挥媒粨Q位置,依次下去就得到第二大,第三大...

代碼如下:

function bubleSort (arr){
            for(let i=0;i<arr.length-1;i++){  //第一層遍歷是計(jì)次,一共需要遍歷n-1論,和以往的遍歷計(jì)點(diǎn)不同
                for(let j=0;j<arr.length-1-i;j++){ //第二層遍歷計(jì)點(diǎn),每次往后移動(dòng)一位,每增加一輪,就少比較一個(gè)已經(jīng)排好序的數(shù)
                    if(arr[j]>arr[j+1]){
                        [arr[j],arr[j+1]] = [arr[j+1],arr[j]]
                    }
                }
            }
            return arr
        }

注解以上是為了便于理解創(chuàng)造的術(shù)語(yǔ),并非官方術(shù)語(yǔ),計(jì)次和計(jì)點(diǎn)是我的理解意思,計(jì)次表示循環(huán)是次數(shù)的累加,計(jì)點(diǎn)是數(shù)據(jù)的位置后移,獲取新的數(shù)據(jù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容