如何使用issorted函数检查数组是否按降序排序

时间:2014-11-17 23:20:39

标签: matlab

我正在尝试使用issorted函数来检查数组是否按降序排序,但它只适用于升序。我在检查顺序之前使用了fliplr函数并且它工作正常但是我不知道是否有更有效的解决方案..任何帮助?

我的代码:

a = [1 2 3 4];
fliplr(a);
s = issorted(a);

3 个答案:

答案 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可以在找到一对值后立即停止。