首页 > 解决方案 > 如何按降序打印无法创建副本的 const 未排序数组中的整数?

问题描述

例如,如果给定{3, 0, 9, 99, 1},我希望它是 {99, 9 ,3, 1, 0}。我尝试创建另一个数组来存储该值,因为我每次都找到下一个最大值,但我无法实现。(新的 C 程序员)。任何帮助表示赞赏,想尝试在 O(n^2) 中解决这个问题

标签: clogic

解决方案


与您声称的相反,我认为问题不在于实施解决方案。如果是这样,您将指定您在实施时遇到的问题。但你没有,所以我认为这是算法本身的问题。

您要求一个需要 O(1) 内存和 O(N^2) 时间的解决方案。这实际上比要求的要大。通过就地排序数组然后打印它,一个需要 O(1) 内存和 O(N log N) 时间的解决方案是可能的

但是让我们假设您想要一个非破坏性的解决方案,这意味着不修改输入数组。以下是这样一个需要 O(1) 内存和 O(N^2) 时间的解决方案:

  1. 设置 max = 最大整数。
  2. 设置计数 = 0。
  3. 虽然 count 小于数组中的元素数,
    1. 设置下一个 = 最小整数。
    2. 对于数组的每个元素,
      1. 如果元素的值等于最大值,
        1. 打印元素的值。
        2. 递增计数。
      2. 别的,
        1. 如果元素的值大于next且小于max,
          1. 设置在元素值旁边
    3. 设置最大值 = 下一个。

在 C 中实现这些步骤中的每一个都是微不足道的。


推荐阅读