堆排序

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),作者:周立

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 常用算法比较,js实现

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style>...

    前朝楚水
  • 各种排序算法总结

    排序算法是最基本最常用的算法,不同的排序算法在不同的场景或应用中会有不同的表现,我们需要对各种排序算法熟练才能将它们应用到实际当中,才能更好地发挥它们的优势。今...

    前朝楚水
  • AngularJS 知识点

    看完务必转发 ? ? ? ? ? ? ? ? ?

    前朝楚水
  • 【从0到1学算法】快速排序

    在学习快速排序前,先上开胃菜,快速排序中用到的算法--分而治之(divide and conquer, D&C,分治法)。

    KEN DO EVERTHING
  • 快速排序

    思想: 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排...

    苦咖啡
  • PHP数据结构(十八) ——直接插入排序

    PHP数据结构(十八)——直接插入排序 (原创内容,转载请注明来源,谢谢) 一、概述 插入排序分为直接插入排序、其他插入排序、希尔排序。其他插入排序又分为折半...

    用户1327360
  • 排序算法-归并排序

    排序算法-归并排序 <?php /** * 合并两个有序数组为一个有序数组 * * @param array $value 待排序数组 * * @r...

    琯琯
  • [javaSE] 数组(排序-选择排序)

    陶士涵
  • [javaSE] 数组(排序-冒泡排序)

    选择排序和冒泡排序性能都很低,提高性能的方法,当需要换位置的时候,先不换,先把需要换位置的角标放到栈内存中,等最后一次性在堆内存中交换

    陶士涵
  • golang数据结构之选择排序

    绝命生

扫码关注云+社区

领取腾讯云代金券