1。写一个通用方法判断给定的数组是否已经排序好?

booming 2004-06-28 04:36:33
1。写一个通用方法判断给定的数组是否已经排序好?
2。说明O(1)和O(2)区别。
...全文
1210 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
booming 2004-07-08
  • 打赏
  • 举报
回复
除了power的还可以。
给分!
booming 2004-07-08
  • 打赏
  • 举报
回复
都是错误答案。

埃。
xdspower 2004-07-06
  • 打赏
  • 举报
回复
我的算法在前面加个对n的判断就可以支持数组为空的情况了。
shines77 2004-07-06
  • 打赏
  • 举报
回复
通用的意思就是面对所有的情况,都可以处理,极端一点,包括数组是空的时候
booming 2004-07-06
  • 打赏
  • 举报
回复
我想这里数组是简单数据类型吧。
如果数组元素是字符串,结构阿,类阿什么的就不能了。
当然,那样的话要制定关键字。否自无法排序了。
booming 2004-07-06
  • 打赏
  • 举报
回复
我觉得本题关键不在效率。
关键是通用二字。

既然题目是给定数组,那么数组类型是定的。不必用模板。
那通用不是针对数据类型。我们假定数组类型是简单类型。
那么,通用是什么意思?
针对啥?
xdspower 2004-07-05
  • 打赏
  • 举报
回复
应该说排序的本源(最终归结)是这两种情况,否则可能的情况就太多了。
booming 2004-07-04
  • 打赏
  • 举报
回复
递增递减不要再讨论了.
我问题是:
排序就是递增,递减两种情况吗?

真的没有了?
xdspower 2004-07-04
  • 打赏
  • 举报
回复
在不考虑数组中有两个以上的数是相同的情况下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;
}
mmmcd 2004-07-03
  • 打赏
  • 举报
回复
我上面的方法错在哪,请举例说明.谢谢
leeky 2004-07-01
  • 打赏
  • 举报
回复
可以先比较第一个数与最后一个数,看它是何种序,如果相等,可以按任何序进行判断;
接下来就是依次对相领两数进行升序或降序(按哪种序由第一步确定)判断了,
BlueAllRise 2004-06-30
  • 打赏
  • 举报
回复
基本上是的..而且两个要分开判断,要不然就会出错的..
booming 2004-06-30
  • 打赏
  • 举报
回复
排序就是递增,递减两种情况吗?
steel007 2004-06-30
  • 打赏
  • 举报
回复
o(1) vs o(2) 没什么区别阿,都表示常数时间~
BlueAllRise 2004-06-29
  • 打赏
  • 举报
回复
上面的那位 ,你的好象不行啊。是个错的啊.如果要计算是否排好序了需要判断两次,第一个是递增的,第二个是递减的....
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;

如果最后结果的flag是True的话,就是排好序了的..
mmmcd 2004-06-28
  • 打赏
  • 举报
回复
1.
for(i=0;i<n-2;i++)// n>2
if(a[i]<a[i+1] && a[i+1]>a[i+2] ||
a[i]>a[i+1] && a[i+1]<a[i+2])
{
没排好序;break;
}

如果上面的break没执行过,则排好序了。

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧