这是Java中整数数组中更昂贵的操作交换或比较

时间:2015-01-11 12:44:53

标签: java sorting time-complexity

在Java中,整数数组中哪些操作交换或比较更昂贵?或者他们都可以被认为是一样的?

上下文:对几乎排序的数组进行排序(我不是在讨论k-排序的数组,其中每个元素从右侧位置移位最多k个)。即使我们使用插入排序,最终的比较次数也会与任何数组或最坏的情况相同。不是吗?只是互换将会减少。如果我错了,请纠正。

1 个答案:

答案 0 :(得分:3)

交换应该更昂贵,因为它包括:

  1. 从内存中读取数据到缓存
  2. 从缓存读取数据到寄存器
  3. 将数据写回缓存
  4. 比较应该更便宜,因为它包括:

    1. 从内存中读取数据到缓存
    2. 从缓存读取数据到寄存器
    3. 在两个寄存器上执行单个比较操作(这应该比将两个整数写入缓存快一点)
    4. 但现代处理器复杂且彼此不同,因此获得正确答案的最佳方法是对代码进行基准测试。