【JS手写编程系列】手写一个冒泡排序

JavaScript020

【JS手写编程系列】手写一个冒泡排序,第1张

题目:手写一个冒泡排序

测试用例:

比如:[3, 2, 4, 5, 1]

冒泡步骤:

缺点:效率低下,很少使用

冒泡排序的原理就是讲两个相邻的元素进行比较,数值大的元素就会往后排就是换到走遍,而我们依次比较并把大数放在后面依次循环,那么最大的元素就会排在最后边,注意:在排完一次之后最后面的数已经是最大的了所以我们并不需再再次比较最后一个元素,也就是比较的次数以此减少。

var arr=[4,2,7,2,5,8,0,4,5,7,3,8,9]

         冒泡排序

         i 的目的是做多少轮的 比较   j和j+1是前后数据比较

         var arr=[4,1,7,2]

          i==0

        arr[i]=4

         j=0  arr[j]=4   arr[j+1]=1    4,1,7,2---->1,4,7,2 

         j=1  arr[j]=4  1,4,7,2--->1,4,7,2

         j=2  arr[j]=7  1,4,7,2--->1,4,2,7

       ### j=3  arr[j]=7 arr[j+1]不存在   因为j+1超过数组的长度,所以j必须是长度-1

         i==1

         j==0 arr[j]=1    1,4,2,7--->1,4,2,7

         j==1 arr[j]=4    1,4,2,7--->1,2,4,7

         ###j==2  上面一次循环中放在最后的是最大的,所以不需要循环到2

          i==2

         j=0  arr[j]=1    1,2,4,7-->1,2,4,7

       function sorts(arr){

            var len=arr.length-1

            for(var i=0i<leni++){

                for(var j=0j<len-ij++){

                    if(arr[j]>arr[j+1]){

                    // if(arr[j+1]-arr[j]<0)

                        var temp=arr[j+1]

                        arr[j+1]=arr[j]

                        arr[j]=temp

                    }

                }

            }

        }

        sorts(arr)

        console.log(arr)