首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >hash排序(哈希排序)的一个JavaScript实现,支持负数

hash排序(哈希排序)的一个JavaScript实现,支持负数

作者头像
Jerry Wang
发布2020-03-27 15:04:45
8830
发布2020-03-27 15:04:45
举报
<html>

  <script>

    (function main() {
      var array = [1, 4, -1, 2, 0, -5, -3, 3, -2, -4, 5];
      var minusArray = [], positiveArray = [];

      for( var i = 0; i < array.length; i++) {
        array[i] >= 0  ? positiveArray.push(array[i]): minusArray.push(-array[i]);
      }
      Array.prototype.max = array_max;
      hashSort(minusArray, positiveArray);
    })();

    function hashSort(min,positive) {
      var result = revert(hashSortInternal(min)).concat(hashSortInternal(positive));
      console.log("after sort: " + result);
    }

    function array_max( ){
      var i, max = this[0];
      for (i = 1; i < this.length; i++) {
        if (max < this[i])
          max = this[i];
      }
      return max;
    }

    function hashSortInternal(array) {
      var bucket = [];
      var MAX = array.max() + 1;
      for (var i = 0; i < MAX; i++)
        bucket[i] = 0;
      for(var i=0; i< array.length; i++)
        bucket[array[i]]++;
      for(var i = 0, idx = 0; i<MAX; i++) {
        for(var k= bucket[i]; k >0; k--) {
          array[idx++] = i;
        }
      }
      return array;
    }

    function revert(array) {
      var result = [];
      for( var i = array.length - 1, idx = 0; i >=0; i--)
        result[i] = -array[idx++];
      array.length = 0;
      return result;
    } 
  </script>
</html> 
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档