js实现快速排序的方法

第一种是通过两个for循环,每一次对比相邻两个数据的大小,小的排在前面,如果前面的数据比后面的大就交换这两个数的位置,这个方法就是比较次数太多了,效率比价低。

我只是传入了一个10位数的数组,如果是上万或者更大的数据,不知道您的电脑会不会蓝屏了,嘿嘿,你可以试试哦!

1
2
3
4
5
6
7
8
9
10
11
12
13
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])<br>输出结果

 下面我们来说说第二种方法,这方法是我浏览阮一峰老师日志看到的,这种方法的效率会高很多,具体选哪种,看情况吧!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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));
};<br>使用的时候,直接调用quickSort()就行了。

  

要是这些注释你看了还不理解的话,那么,可以去看看阮一峰老师的日志,链接http://www.ruanyifeng.com/blog/2011/04/quicksort_in_javascript.html

转载于:https://www.cnblogs.com/xfcao/p/10004344.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值