使用对象排序的时间复杂度是多少? [已关闭]

问题描述 投票:0回答:1

我有一个带有实时值的套接字。我得到未排序的行对象,然后我需要创建接收到的对象的列表并按价格对它们进行排序。 之后,我的数据已正确排序。 我正在使用对象来解决这个问题。像这样:

const data={};
function createListAndSort(row){
  data[row.price]=row;
  return Object.values(data); // return sorted data   
}

socket.onMessage=(row)=>{
  createListAndSort(row)
}


我的行数据是实时的,但它具有如下三个属性:

row = {id: 1 , price: 15664, name: 'test'}

在此方法中,虽然值是按特定顺序输入的,但由于键的数量,它们会自动排序到对象中。像这样:

如上所述,收到的数据未排序,可能以任何顺序到达我们。并且输出数据也用这种方法进行了排序。 我需要知道该方法的时间复杂度是否较低或使用排序函数。 对象的自动排序时间复杂度是多少?

javascript algorithm time-complexity
1个回答
1
投票

将对象用于表格/列表数据并不是最佳选择。您错过了可以用来操作数据的所有数组方法。始终使用数组。对于您的情况,只需收集数组中的行并按价格属性排序。虽然将项目推入对象以使其排序速度更快,但在实际数据大小上,其好处是相当值得怀疑的。

就您的情况而言,该算法是特定于实现的,是一个黑匣子。我猜这是一个二分搜索+插入,时间复杂度为O(log N)。

关于评论中你的问题

我需要知道这个方法的时间复杂度较小还是排序功能?

我的猜测是肯定的,因为对象属性插入算法已经知道属性键已排序,而数组排序函数没有此信息。

© www.soinside.com 2019 - 2024. All rights reserved.