简单选择排序最坏的情况的移动次数是多少啊?

fullmoon525 2006-03-03 04:51:25
如提
麻烦解释一下
...全文
2377 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjd7623054 2006-03-06
  • 打赏
  • 举报
回复
我也同意是N!次
bohlee 2006-03-06
  • 打赏
  • 举报
回复
mark
duduhaha 2006-03-03
  • 打赏
  • 举报
回复
n(n-1)/2是比较次数,而不是数据移动次数,这个要分清.移动次数是在swap语句中发生的.
如果调用swap的次数是n-1,每次需要3个赋值语句,那么总共就要3(n-1)次.
应该标准就是这样的.
屋顶上的老猫 2006-03-03
  • 打赏
  • 举报
回复
一个集合中选择一个最小数,与首位交换位置!然后在待选集合中再次选择最小数与第二个交换位置....

最坏情况是每次循环到最后一次,也就是从n-1、n-2、n-3...1

等差数列求和为n(n-1)/2,这个为最坏情况的次数
lbing7 2006-03-03
  • 打赏
  • 举报
回复
好像是N!次
duduhaha 2006-03-03
  • 打赏
  • 举报
回复 1
在最坏情况下为3(n-1)次(外循环执行n-1次,每次移动有三条赋值语句,固为3(n-1)次)。
void swap(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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