最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

什么数据结构可以给O(1)查找小数键?

运维笔记admin10浏览0评论

什么数据结构可以给O(1)查找小数键?

什么数据结构可以给O(1)查找小数键?

我有一组包含数字对的随机数据。

[{width: 123.89000000, length: 4.50},{width: 23.45360, length: 7.20}, ...]

我想查找宽度以获得O(1)时间的长度,我希望数组按宽度排序。

在Javascript / NodeJS中存储数据结构的最佳方式是什么?我测试过了

var hashtable = {};
hashtable[17400.23400000] = { width: 17400.23400000, length: 4.5 };
console.log(hashtable[17400.234]); // check that the key is treated like a real number

它似乎工作,但它呢?

编辑:

为澄清要求,让我解释一下情况:

我实时从websocket获取宽度和长度数据。宽度是离散的,最多4个小数位,我需要更新相应的长度作为数据流,有时添加新的宽度,有时删除现有的宽度。因此,我需要一个快速的查找解决方案。

然后在每个不确定的x毫秒上,我需要返回这个宽度和长度数组的快照作为排序数组。此数组中的对数可能约为260,000。理想情况下,x应尽可能小。

目前我正在使用哈希表并使用lodash根据请求进行排序,但我想知道是否有更快的数据结构是合适的。

回答如下:

不知道这是否对你有所帮助,但我会做这样的事情......虽然这里不需要排序接缝。

// example array;
var a = [{
  width: 123.89000000,
  length: 4.50
}, {
  width: 23.45360,
  length: 7.20
}, {
  width: 56.35360,
  length: 2.20
}, {
  width: 254.1260,
  length: 1.20
}];

// sort the array
a.sort(function(a, b) {
  return a.width < b.width
});

// lookup fn
a.O = function(lookup) {
  var flag = 0;
  for (var i = 0; i < a.length; i++) {
    if (lookup == a[i].width) return a[i].length;
  }
  return false;
};

// exec lookup
console.log(a.O(123.59), a.O(123.89));
发布评论

评论列表(0)

  1. 暂无评论