我正在尝试使用issorted
函数来检查数组是否按降序排序,但它只适用于升序。我在检查顺序之前使用了fliplr
函数并且它工作正常但是我不知道是否有更有效的解决方案..任何帮助?
我的代码:
a = [1 2 3 4];
fliplr(a);
s = issorted(a);
答案 0 :(得分:5)
否定一个?它应该比fliplr(a)更快。
a = -2:4;
s = issorted(-a);
答案 1 :(得分:4)
fliplr
仅执行此操作:
if ~ismatrix(x)
error(message('MATLAB:fliplr:SizeX'));
end
y = x(:,end:-1:1);
所以只需执行y = x(:,end:-1:1);
而不是执行fliplr
,您就可以加快代码速度。您也可以尝试@kmundnic建议,但当a
是字符串单元格时它不会工作,issorted
也可以对字符串单元格进行操作。
答案 2 :(得分:2)
对于数字向量,这应该非常快:
s = all(diff(a)<=0);
或者
isempty(find(diff(a)>0,1))
这样find
可以在找到一对值后立即停止。