• js冒泡排序


    js冒泡排序

      冒泡排序,其实是我们学js必不可少的典型的例子,也是面试题中常见的问题.我自己总结了几种排序的方法:

    1,数组排序函数sort()

     1 var arr=[1,23,43,12,65];
     2 document.write("arr使用sort函数排序返回值:"+arr.sort()+"<br/>");//默认的是ASCII值
     3 document.write("排序后arr的值为:"+arr+"<br/>");
     4 document.write("<hr/>");
     5 function demo(a,b){
     6     if(a>b){
     7             return 1;
     8     }else{
     9             return -1;
    10     }
    11     document.write(arr.sort(demo)+"<br/>");

    2,自定义冒泡排序

     1 var arr=[12,35,6,80,9];
     2 function fun(m,demo){
     3     for(var i=0,i<m.length-1;i++){
     4         var tem;
     5         for(var j=0;j<m.length-i-1;j++){
     6             if(m[j],m[j+1]<0){
     7             tem=m[j];
     8             m[j]=m[j+1];
     9             m[j+1]=tem;
    10             }
    11         }
    12     }
    13     return  arr;
    14 }
    15 function dd(a,b){
    16     if(a>b){
    17         return 1;
    18     }else{
    19         return -1;
    20     }
    21 document.write(fun(arr,dd));

    上边这个冒泡排序只是降序排序 如果想变成升序排序 可以把return 1和return -1调换一下位置,或者把a>b改成a<b都可以下面附上一张我自己画的自己的思路图,这样可以让大家更好的理解画的不好看

    优化:上面的代码上面代码中,里面一层循环在某次扫描中没有发生交换,说明此时数组已经全部排好序,后面的步骤就无需再执行了。因此,增加一个标记,每次发生交换,就标记,如果某次循环完没有标记,则说明已经完成排序。

     1 var arr = [31,2,6,80,9];
     2     function fun(m, demo){
     3      var bs = true; 
     4         for(var i=0;i<m.length-1;i++){//一共要排的次数
     5           // 每次先重置为false  
     6         bs = false; 
     7           var tmp ;
     8             for(var j=0;j<m.length-1-i;j++){
     9               // if(m[j]<m[j+1]){
    10               if(demo(m[j],m[j+1])<0){
    11                 tmp = m[j];
    12                 m[j] = m[j+1];
    13                 m[j+1] = tmp;
    14                  bs = true; 
    15               }
    16             }
    17 //如果上一次扫描没有发生交换,则说明数组已经全部有序,退出循环 
    18          if(!bs){
    19           break;
    20          }
    21         }
    22 
    23         return arr;
    24          }   
    25 
    26      function dd(a,b){
    27         if(a>b){
    28           return 1;
    29         }else{
    30           return -1;
    31         }
    32      }
    33 
    34 
    35     document.write(fun(arr,dd));

    3,还有一种就是说只有一个数组的时候怎样排序其实就是在function fun(m, demo){

       var len = arr.length;

       if(len <= 1){ return arr; }

    }里面加入这句代码就可以了,好了我了解到的冒泡排序就那么多希望大家可以做个参考

  • 相关阅读:
    POJ 2593&&2479:Max Sequence
    POJ 2115:C Looooops
    杭电2187--悼念512汶川大地震遇难同胞——老人是真饿了
    南阳448--寻找最大数
    杭电2544--最短路(Floyd)邻接表使用方法模板
    杭电2141--Can you find it?
    杭电1242--Rescue(BFS+优先队列)
    杭电1241--Oil Deposits(Dfs)
    南阳42--一笔画问题
    杭电1950--Bridging signals (二分法→ →LIS)
  • 原文地址:https://www.cnblogs.com/caixiufang/p/6395423.html
Copyright © 2020-2023  润新知