【问题标题】:Can a counting sort be considered in-place when the problem constrains the number of input values?当问题限制输入值的数量时,是否可以就地考虑计数排序?
【发布时间】:2021-01-04 02:08:54
【问题描述】:

我在 leetcode 上做这个问题:

给定一个数组 nums,其中有 n 个对象,颜色为红色、白色或蓝色,排序 它们就地,以便相同颜色的对象相邻, 颜色按红、白、蓝的顺序排列。

在这里,我们将使用整数 0、1 和 2 来表示红色, 分别是白色和蓝色。

虽然有一个相当令人满意的解决方案,您只需一次将 0 推到左侧,将 2 推到右侧,但我很难理解为什么计数排序也不能算作就地排序解决这个问题。

毕竟,您只需要恒定的计算空间。

您可以争辩“当然,但如果我说有 N 种颜色,它就不再是恒定空间”,但这只是一个不同的问题,预期的解决方案不适用于 N 种颜色。

那么,是什么让计数排序不是一个出色、有效的问题答案呢?

【问题讨论】:

    标签: sorting counting in-place


    【解决方案1】:

    当然,您可以使用三个整数变量来计算每种颜色的出现次数,然后以正确的顺序用每种颜色的正确数量填充初始数组。这具有恒定的空间成本(除了输入数组之外),并且是该问题的完全有效答案。

    当然,如果颜色的数量不再是恒定的,那么这个方法不成立,但是你不能进行就地计数排序;您将不得不求助于另一种算法来进行就地排序,代价是时间复杂度更高。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-15
      • 1970-01-01
      • 1970-01-01
      • 2013-11-08
      相关资源
      最近更新 更多