简单选择排序最坏的情况的移动次数是多少啊?
如提
麻烦解释一下
问题点数:50、回复次数:6Top
1 楼duduhaha(三人行必有我师)回复于 2006-03-03 17:04:09 得分 50
在最坏情况下为3(n-1)次(外循环执行n-1次,每次移动有三条赋值语句,固为3(n-1)次)。
void swap(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}Top
2 楼lbing7(向青润老大学习!!!)回复于 2006-03-03 17:06:55 得分 0
好像是N!次Top
3 楼cyberHunK(→迈克·老猫←)回复于 2006-03-03 17:16:23 得分 0
一个集合中选择一个最小数,与首位交换位置!然后在待选集合中再次选择最小数与第二个交换位置....
最坏情况是每次循环到最后一次,也就是从n-1、n-2、n-3...1
等差数列求和为n(n-1)/2,这个为最坏情况的次数Top
4 楼duduhaha(三人行必有我师)回复于 2006-03-03 17:24:11 得分 0
n(n-1)/2是比较次数,而不是数据移动次数,这个要分清.移动次数是在swap语句中发生的.
如果调用swap的次数是n-1,每次需要3个赋值语句,那么总共就要3(n-1)次.
应该标准就是这样的.Top
5 楼bohlee(我心澎湃)回复于 2006-03-06 15:42:35 得分 0
markTop
6 楼wjd7623054(千古风流)回复于 2006-03-06 17:02:25 得分 0
我也同意是N!次Top




