美文网首页
冒泡排序(BubbleSort)

冒泡排序(BubbleSort)

作者: 神奇的少年 | 来源:发表于2017-03-05 01:50 被阅读0次

    BubbleSort

    先说说这个最慢的排序吧,很好理解,从字面上来看排序的方式就像冒泡一样,所以是最慢的


    解:
    (1)比较相邻的两个元素,如果前面的比后面的大就交换位置
    (2)那么第一轮下来,最后一个就是最大的
    (3)再按照第一步,这时候就不用比较上最后一个了,所以要每次减掉最后一个最大的值再进行下一轮比较

    好了,聪明的你已经知道怎么写了

    1.定义一个方法,需要传入数组比较吧

    function BubbleSort(arr){}
    

    2.遍历数组,因为每次最后一个都是最大的,所以要length-1,还要拿出相邻元素比较,所以再遍历一遍取出相邻元素

    function BubbleSort(arr){
      for(var i=0;i<arr.length-1;i++){
        for(var j=0;j<arr.length-i-1;j++){
          
        }
      }
    }
    

    3.现在就判断一下,如果前面比后面大,就交换位置

    function BubbleSort(arr){
      for(var i=0;i<arr.length-1;i++){
        for(var j=0;j<arr.length-i-1;j++){
          if(arr[j]>arr[j+1]){
            var swap=arr[j];
            arr[j]=arr[j+1];//后移
            arr[j+1]=swap;//前后交换了
          }
        }
      }
    };
    

    完工!下面我们再看一个do-while的写法

    function BubbleSort(arr){
      var swap;
      do{
        swap=false;
        for(var i=0;i<arr.length-1;i++){
          if(arr[i]>arr[i+1]){
            var temp=arr[i];
            arr[i]=arr[i+1];
            arr[i+1]=temp;
            swap=true;
          }
        }
      }while(swap);
    };
    

    这样写经过测试,效率稍微高了一点点.可谓能优化则优化
    第一种写法经测试平均运行时间是:0.03966ms
    第二种写法经测试平均运行时间是:0.04166ms

    刚刚想起了时间复杂度,空间复杂度,后面补上!

    相关文章

      网友评论

          本文标题:冒泡排序(BubbleSort)

          本文链接:https://www.haomeiwen.com/subject/reksgttx.html