在不考虑数组中有两个以上的数是相同的情况下mmmcd(超超) ( )的方法是对的,不过效率不一定高, leeky(雅痞·千年虫)的思路比较好,可以大大的减少比较次数。
其实你们的算法不一定是完整的,你们都没有考虑存在同样数的情况,即数组中有两个以上的数是相同的情况,此外还要考虑数据量,数组也可能只有一个元素啊。
我的算法:
bool test( int *a,
int n//数组长度
)
int i;
flag=true;
if (a[0]==a[n-1]){
for (i=1;i<(n-1);i++) if (a[0]!=a[i]) {flag=false;break;}
}
else if (a[0]<a[n-1]) {
for (i=1;i<n;i++) if (a[i-1]>a[i]) {flag=false;break;}
}
else {
for (i=1;i<n;i++) if (a[i-1]<a[i]) {flag=false;break;}
}
return flag;
}
上面的那位 ,你的好象不行啊。是个错的啊.如果要计算是否排好序了需要判断两次,第一个是递增的,第二个是递减的....
flag:=true;
for i:=1 to n-1 do
if a[i]>a[i+1] then
begin
flag:=false;
break;
end;
if not flag then
begin
flag:=true;
for i:=1 to n-1 do
if a[i]<a[i+1] then
begin
falg:=false;
break;
end;
end;