我有一个numpy数组,我想检查它是否已排序.
>>> a = np.array([1,2,3,4,5])
array([1, 2, 3, 4, 5])
Run Code Online (Sandbox Code Playgroud)
B. *_* M. 23
使用NumPy工具:
np.diff(a)>=0
Run Code Online (Sandbox Code Playgroud)
但是numpy解决方案都是O(n).
如果您想快速编写代码并在未排序的数组上快速得出结论:
import numba
@numba.jit
def is_sorted(a):
for i in range(a.size-1):
if a[i+1] < a[i] :
return False
return True
Run Code Online (Sandbox Code Playgroud)
在随机数组上是O(1).
luc*_*uca 14
np.all(a[:-1] <= a[1:])
Run Code Online (Sandbox Code Playgroud)
例子:
is_sorted = lambda a: np.all(a[:-1] <= a[1:])
>>> a = np.array([1,2,3,4,9])
>>> is_sorted(a)
True
>>> a = np.array([1,2,3,4,3])
>>> is_sorted(a)
False
Run Code Online (Sandbox Code Playgroud)