【发布时间】:2022-11-28 22:06:24
【问题描述】:
假设我正在使用 Math.random() 生成随机数,可能有 1000 个,并且我希望它们(始终)按升序排列。是否有某种数据结构可以让它们始终保持排序,而无需调用排序例程?我唯一能想到的就是堆?但可能有更好的方法。
一些代码会有所帮助:
const numContainer = {};
for(let i = 0; i < 1000; i++){
const r = Math.random();
numContainer[r] = {r}; // this isn't helping :-)
}
很明显,上面的内容并不会真正维护键等的任何数字顺序。我希望在我去的时候对它们进行排序。
【问题讨论】:
-
我会使用二叉树。每次你有一个新数字时,你都会将它添加到正确的叶子上,这样你所有的数字都是有序的,而不是传统的数组方式。
-
B-tree,B+-tree,AVL,红黑,skiplist,...任你挑选。
-
booof 我想知道是否有线性方式
-
你能更具体地说明你在做什么吗?你想用排序后的随机数做什么?请注意,对 1000 个随机数进行 1000 次排序几乎不需要时间,因此很难找到对现实世界有任何影响的“优化”解决方案。
-
这回答了你的问题了吗? Random numbers external sort
标签: algorithm sorting data-structures heap