zoukankan      html  css  js  c++  java
  • 堆排序

      堆排序是指利用堆这种数据结构所设计的一种排序算法。近似于完全二叉树,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。它的时间复杂度是O(nlog2(n)),空间复杂度是O(1),其算法不稳定。

     1 var length;//因为声明的多个函数都需要数据长度,所以把len设置成为全局变量
     2 //建立大顶堆
     3 function buildMaxHead(arr) { 
     4     length = arr.length;
     5     for (var i = parseInt(length/2); i>=0; i--) {
     6         heapify(arr,i);
     7     }
     8 }
     9 //堆调整
    10 function heapify(arr,i) {
    11     var left = 2*i+1;
    12     var right = 2*i+2;
    13     var largest = i;
    14     if(left<length&&arr[left]>arr[largest]){
    15         largest = left;
    16     }
    17     if(right<length&&arr[right]>arr[largest]){
    18         largest = right;
    19     }
    20     if(largest!=i){
    21         swap(arr,i,largest);
    22         heapify(arr,largest);
    23     }
    24 }
    25 //交换两个数
    26 function swap(arr,i,j) {
    27     var temp = arr[i];
    28     arr[i] = arr[j];
    29     arr[j] = temp;
    30 }
    31 //堆排序
    32 function heapSort(arr) {
    33     buildMaxHead(arr);
    34     for ( var i = arr.length-1; i >0; i--) {
    35         //console.log(arr);
    36         swap(arr,0,i);
    37         length--;
    38         heapify(arr,0);
    39     }
    40     return arr;
    41 }
    42 console.log(heapSort([10,3,5,6,2,7,9,4,0,2,5]));
  • 相关阅读:
    SpringSecurity Oauth2.0
    公钥与私钥
    Springboot集成SpringSecurity
    shiro2
    Maven的聚合工程(多模块工程)
    1.RabbitMQ
    3.使用Spring Data ElasticSearch操作ElasticSearch(5.6.8版本)
    2.ElasticSearch集群的搭建
    1.ElasticSearch相关概念
    Vuejs-网络
  • 原文地址:https://www.cnblogs.com/daheiylx/p/9753079.html
Copyright © 2011-2022 走看看