我目前正在经历CRLS,我对使用卫星数据进行分类操作的时间复杂性感到困惑。
假设我有四个这样的数据点:
{key: 3, satellite_data: big_array}
{key: 6, satellite_data: big_array}
{key: 2, satellite_data: big_array}
{key: 1, satellite_data: big_array}
{key: 1, satellite_data: big_array}
我可以将此数据排序为O(nlog(n))。
但是,如果我不想在排序过程中移动卫星数据,该怎么办。
选项1:
仅使用键将指针移至卫星数据。这绝对可以节省空间,并且不会增加时间复杂度。但是我不明白为什么排序算法需要稳定。如果始终将指向卫星数据的指针绑定到该键,那么如果两个具有相同值的键更改位置就不会有问题。
选项2:
首先对键进行排序,而没有指向卫星数据的指针,然后对哪个键移至新位置=>创建排列表。然后,该排列表可用于移动卫星数据。但是,创建置换表会极大地损害时间复杂度。
报价单CLRS:
计数排序的一个重要属性是它是稳定的:具有相同值的数字在输出数组中的出现顺序与在输入数组中的出现顺序相同。也就是说,它通过以下规则打破两个数字之间的联系:输入数组中第一个出现的数字在输出数组中第一个出现的规则。通常,仅当携带分类数据携带卫星数据时,稳定性才重要。
有人可以清理吗?