冒泡排序



所謂的冒泡排序,其實指的是對數組中的數據進行排序,按照從小到大的順序來進行排列.

它重復地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果他們的順序(如從大到小、首字母從A到Z)錯誤就把他們交換過來。走訪元素的工作是重復地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。
這個算法的名字由來是因為越大的元素會經由交換慢慢“浮”到數列的頂端(升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名“冒泡排序”。

 

生活原理:假設小明是最矮的;然后通過比較,發現二狗要比小明矮,就和小明換位置,兩兩比較,通過第一次比較可以找出二狗是最矮的人,
然后假設隊伍的第二個人是最矮的,讓他和剩下的人比較身高,依次找出其他人的位置。

js思路:假想數組中的任意一個值是最小;然后通過比較兩兩比較,找出索引值,換位,然后賦值。
// 數組的冒泡排序 var arr = [10,3,4,2,32,43,100,99]; maoPao(arr); // 希望對上面的數組進行冒泡排序的處理 // 將兩個值進行對比 function maoPao(arr) { var flag = 1; // 用來標記某一次排序是否發生交換 for(var i =0;i<arr.length-1;i++) { flag = 0; // 設置為0表示沒有發生交換
      

    for (var j =0;j < arr.length-i-1;j++){
//arr.length - i - 1相當於 arr.length - (i + 1 ),
/**為什么設置這個命令?因為第一次循環數組的最后一位已經確定了,第二次循環數組的倒數第二位也確定,以此類推.*/
 
 
        
//var temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp;相當於把數組[j]數據賦值給變量temp,然后把等於數組[j+1]的值賦值給數組[j],
//再把temp
值賦值給數組[j+1],此時數組[j]和數組[j+1]的值已經發生了改變
 

if (arr[j] > arr[j+1]) { // 進行交換 var temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; flag = 1; // 設置為1 表示本次循環發生了交換 } } console.log(arr); // 每次都輸出一下數組 if(flag === 0) break; // 如果沒有發生改變,則停止循環 } }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM