小编Poo*_*mer的帖子

仅使用这些黑盒函数对数组进行排序的最快方法?

问题如下:

作为输入,您将获得一个大小为N的数组(ARR),该数组不知道–的内容,并且将无法看到–的内容以及预先分配的值U?N。您的解决方案应适用于UN的任何值。

系统会为您提供大小为N的工作数组(W)。您还可以使用以下同时在O(1)时间运行的帮助器函数:

  • SORT(A,B):SORT将采用数组ARRW的两个连续部分,大小为| A |?U| B |?U,将它们合并为一个新数组,对其进行排序,然后将其下部大小| A | 这种新的数组回,剩下的值代入。它将返回A中剩余的A值的数量。

  • COPY(A-> C):COPY会将A的内容复制到C中| A | == | C |

我已经有解决此问题的方法,它是合并排序的一个变体,并且具有类似O((N / U)log(N / U))的运行时,但是我想知道是否有更快的解决方案。

另外,我想知道如何在没有工作数组(W)的约束下如何对数组进行排序。


根据要求,我的解决方案(非常非正式和简化)

# Define helper subroutine MERGE (merges two sorted arrays) …
Run Code Online (Sandbox Code Playgroud)

arrays sorting algorithm

5
推荐指数
1
解决办法
323
查看次数

如何在空文件上使用 json.load(filename)?

我有一个可能是空的文件,也可能不是空的。目标是从文件中读取一个 json 对象,附加到它,然后将它写回文件。但是,在文件为空的情况下, json.load() 会失败。如何解决此问题而无需事先检查文件是否为空?

这是我当前的代码:

with open(filename, 'a+') as infile:
    old_data = json.load(infile)
data = old_data + obj
with open(filename, 'w') as outfile:
    json.dump(data, outfile)
Run Code Online (Sandbox Code Playgroud)

错误信息是:

 File "<stdin>", line 3, in <module>
  File "/usr/lib/python3.6/json/__init__.py", line 299, in load
    parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
  File "/usr/lib/python3.6/json/__init__.py", line 354, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.6/json/decoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.6/json/decoder.py", line 357, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 …
Run Code Online (Sandbox Code Playgroud)

python json python-3.x

3
推荐指数
2
解决办法
9604
查看次数

标签 统计

algorithm ×1

arrays ×1

json ×1

python ×1

python-3.x ×1

sorting ×1