堆排序

function sort_heap(arr){
      var temp;
      var n = arr.length;
      for(var i = parseInt(n/2-1);i>=0;i--){
          Adjust(arr, i, n);  
      }        
      for(var i = n-1;i > 0;i--){
          temp = arr[0];                                //交换根节点与最后一个叶子节点,要调整的范围减1
          arr[0] = arr[i];
          arr[i] = temp;
          Adjust(arr, 0, i);                          //不断减小长度、 交换、调整
      }  
      return arr;
  }
  function Adjust(arr,i,n){    
      var j = 2*i+1;                                
      var temp = arr[i];                                
      while(j<n){                                        
          if(j<n-1 && arr[j]<arr[j+1]){
              j++; 
          }
          if(temp >= arr[j]){
             break; 
          }
          arr[parseInt((j-1)/2)] = arr[j];              
          j = j*2+1;                                  
      }
      arr[parseInt((j-1)/2)] = temp;                                
  }

原文发布于微信公众号 - 交互设计前端开发与后端程序设计(interaction_Designer)

原文发表时间:2015-12-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券