前端基礎算法【冒泡排序】——兩種思路及詳解


第一種簡單的比較寫法

<script>
    var nums = [-30,755,6,8,99,0];

    //冒泡排序
    for(var i =0;i<nums.length-1;i++){  //控制比較的輪數
        for(var j=0;j<nums.length-1-i;j++){  //控制比較的次數
            //用第三方變量交換值
            if(nums[j]>nums[j+1]){ 
                var temp = nums[j];
                nums[j] = nums[j+1];
                nums[j+1] = temp;
            }
        }
    }
    console.log(nums)

</script>

解題思路:每一次都對比兩個相鄰數的大小,小的就排在前面,否則就交換位置

      var nums = [-30,755,6,8,99,0];

第1次排序后:-30,755,6,8,99,0
第2次排序后:-30,6,755,8,99,0
第3次排序后:-30,6,8,755,99,0
第4次排序后:-30,6,8,99,755,0
第5次排序后:-30,6,8,99,0,755

第6次排序后:-30,6,8,99,0,755
第7次排序后:-30,6,8,99,0,755
第8次排序后:-30,6,8,99,0,755
第9次排序后:-30,6,8,0,99,755
第10次排序后:-30,6,8,0,99,755

第11次排序后:-30,6,8,0,99,755
第12次排序后:-30,6,0,8,99,755
第13次排序后:-30,6,0,8,99,755
第14次排序后:-30,0,6,8,99,755
第15次排序后:-30,0,6,8,99,755

  ↑          ↑

nums.length-1   nums.length-1-(5/4/3/2/1=== i)

 

第二種寫法

 

 

 

 

 

不使用中間變量的寫法


免責聲明!

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



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