JS 09——冒泡排序法(默认是升序)

冒泡排序法(假定 从小到大排序)
比如给定6个元素如下:
3,6,8,1,34,25 (这是最初的样子)
注意:相邻两个之间相比,如果前面的数字>后面的数字,就进行交换

第一趟,(为了确定最后一个数字)  总共比较次数5次  过程如下
    第一次(第一位和第二位进行比过之后的结果) 3,6,8,1,34,25
    第二次(第二位和第三位进行比过之后的结果) 3,6,8,1,34,25
    第三次(第三位和第四位进行比过之后的结果) 3,6,1,8,34,25
    第四次(第四位和第五位进行比过之后的结果) 3,6,1,8,34,25
    第五次(第五位和第六位进行比过之后的结果) 3,6,1,8,25,34 
    
   (第一趟的最终结果,把最大值找出来了,是34,我们放到末尾)



 第二趟,(为了确定倒数第二个数字)  比较次数4  过程如下(由于第一趟已经把最大值34找出来了,那我们现在的数字就只剩下3,6,1,8,25,在第一次的那个最终结果上,我们还按照这个方法,从第一个数字3开始往后相邻之间挨个挨个进行比较,如果前面的数字比后面的大,就交换,过程如下:
    第一次(第一位和第二位进行比过之后的结果)3,6,1,8,25,   34
    第二次(第二位和第三位进行比过之后的结果)3,1,6,8,25,   34
    第三次(第三位和第四位进行比过之后的结果)3,1,6,8,25,   34
    第四次(第四位和第五位进行比过之后的结果)3,1,6,8,       25,34
    
   (第二趟的最终结果,我们也把最大值找出来了,是25,我们也给它往后续)


 
 第三趟,(为了确定倒数第三个数字)  比较次数3  过程如下(由于第二趟已经把最大值25找出来了,那我们现在的数字就只剩下3,1,6,8 在第二次的那个最终结果上,我们还按照这个方法,从第一个数字3开始往后相邻之间挨个挨个进行比较,如果前面的数字比后面的大,就交换,过程如下:
     第一次(第一位和第二位进行比过之后的结果)1,3,6,8,     25,34
     第二次(第二位和第三位进行比过之后的结果)1,3,6,8,     25,34
     第三次(第三位和第四位进行比过之后的结果)3,1,6,        8,25,34
    
    (第三趟的最终结果,我们也把最大值找出来了,是8,我们也给它往后续)
 

  
第四趟,(为了确定倒数第四个数字)  比较次数2  过程如下(由于第三趟已经把最大值8找出来了,那我们现在的数字就只剩下3,1,6 在第三次的那个最终结果上,我们还按照这个方法,从第一个数字3开始往后相邻之间挨个挨个进行比较,如果前面的数字比后面的大,就交换,过程如下:
     第一次(第一位和第二位进行比过之后的结果)1,3,6,        8,25,34
     第二次(第二位和第三位进行比过之后的结果)1,3,           6,8,25,34
    (第四趟的最终结果,我们也把最大值找出来了,是6,我们也给它往后续))
  

   
第五趟,(为了确定倒数第五个数字)  比较次数1  过程如下(由于第四趟已经把最大值6找出来了,那我们现在的数字就只剩下3,1 在第四次的那个最终结果上,我们还按照这个方法,从第一个数字开始往后相邻之间挨个挨个进行比较,如果前面的数字比后面的大,就交换,过程如下:
     第一次(第一位和第二位进行比过之后的结果)1,3,6,8,25,34
    (第五趟的最终结果,我们也把最终结果找出来了,是3,那么此时,我们就全部排序完了)
 <script>
       
        //冒泡排序 ,默认是升序   【13,6,8,1,34,25】  
        function sortArray(tempArr) {
            // i:表示趟数
            //通过总结上面的文字分析过程,我们会发现,假如一个数组内是6位元素,那么趟数就得有5趟,所以我们底下这个i写的是i<tempArr.length
            for (let i = 1; i < tempArr.length; i++) {
                document.write('<h1>第' + i + '趟</h1>')
                // j:表示前面元素的下标
                //  每一趟里面,都要进行前后两个元素的比较 
                //通过总结上面的文字分析过程,我们会发现一个规律,趟数+每一趟里面比较的次数=元素个数。比如第一趟,(为了确定最后一个数字),其实就比较了5次,那么1+5=6
                //所以,底下关于j的取值,其实是用第一趟的分析过程,往进代得出的规律,所以底下这个j的取值写的是j < tempArr.length - i
                for (let j = 0; j < tempArr.length - i; j++) {
                    // 当前面的元素比后面元素大了  则交换
                    // j+1 是紧跟在j后面的元素的下标
                    if (tempArr[j] > tempArr[j + 1]) {
                        let temp = tempArr[j];
                        tempArr[j] = tempArr[j + 1];
                        tempArr[j + 1] = temp;
                    }
                }
                document.write('<h1>' + tempArr + '</h1>')
            }
            
            
        }
        let result=sortArray([4,7,2,8,5,9])
        document.writez(result)
 </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值