js实现快速排序算法的2种方式

第一种:通过两个for循环 每一次对比相邻两个数据的巨细,小的排在前面,若是前面的数据比后面的大就交流这两个数的位置,这个方式就是对照次数太多了,效率对照低。我只是传入了一个10位数的数...

第一种:通过两个for循环

每一次对比相邻两个数据的巨细,小的排在前面,若是前面的数据比后面的大就交流这两个数的位置,这个方式就是对照次数太多了,效率对照低。我只是传入了一个10位数的数组,若是是上万或者更大的数据,不知道您的电脑会不会蓝屏了,嘿嘿,你可以试试哦!

var Sort=function(arr){ 
    for(var i=0;i<arr.length-1;i++){ 
        for(var j=i+1;j<arr.length;j++){ 
            if(arr[i]>arr[j]){/*若是前面的数据比后面的大就交流位置*/
                var list=arr[i]; 
                arr[i]=arr[j]; 
                arr[j]=list; 
            }  
        } 
    }  
    return arr; 
} 
Sort([10,10,1,2,4,6,7,89,7,4]) //输出效果


第二种方式

这方式是我浏览阮一峰先生日志看到的,这种方式的效率会高许多,详细选哪种,看情况吧!

var quickSort = function(arr) {
  if (arr.length <= 1) {//若是数组长度小于即是1无需判断直接返回即可 
        return arr;
    }
  var pivotIndex = Math.floor(arr.length / 2);//取基准点 
  var pivot = arr.splice(pivotIndex, 1)[0];//取基准点的值,splice(index,1)函数可以返回数组中被删除的那个数
  var left = [];//存放比基准点小的数组
  var right = [];//存放比基准点大的数组 
  for (var i = 0; i < arr.length; i++){ //遍历数组,举行判断分配 
    if (arr[i] < pivot) {
      left.push(arr[i]);//比基准点小的放在左边数组 
    } else {
      right.push(arr[i]);//比基准点大的放在右边数组 
    }
  }
    //递归执行以上操作,对左右两个数组举行操作,直到数组长度为<=1; 
  return quickSort(left).concat([pivot], quickSort(right));
};//使用的时刻,直接挪用quickSort()就行了。


思源资源网:分类流动

1.阿里云: 本站现在使用的是阿里云主机,平安/可靠/稳固。点击领取2000米代金券、领会最新阿里云产物的种种优惠流动点击进入

2.腾讯云: 提供云服务器、云数据库、云存储、视频与CDN、域名等服务。腾讯云各种产物的最新流动,优惠券领取点击进入

3.广告同盟: 整理了现在主流的广告同盟平台,若是你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/2921

  • 发表于 2021-02-11 16:48
  • 阅读 ( 214 )
  • 分类:互联网

0 条评论

请先 登录 后评论
明军w工作室
明军w工作室

696 篇文章

你可能感兴趣的文章

相关问题