寄托天下
查看: 1572|回复: 4

请教一道CS_SUB题目 [复制链接]

Rank: 2

声望
0
寄托币
112
注册时间
2004-10-29
精华
0
帖子
0
发表于 2005-10-17 22:07:32 |显示全部楼层
题目:冒泡排序,A[1..n],已经从A[1]排序到A[i],问A[i]与A[i+1]交换的概率.


我的疑问:既然从A[1]到A[i]已经排序好了,那A[i]肯定要小于A[i+1]啊(如果是最小的放在最前面)?那么A[i]与A[i+1]肯定就不会需要交换的了?

使用道具 举报

Rank: 2

声望
0
寄托币
305
注册时间
2003-6-9
精华
0
帖子
0
发表于 2005-10-17 22:49:26 |显示全部楼层
不是啊。。假设排到现在是这种情况,小的上升冒泡到最前面

数值     2 3 4 5 6 7 8 9 10 1
i值       1 2 3 4 5 6 7 8  9  10
a[i] = 10, a[i+1] = 1
总之无论大的还是小的冒泡
a[i]是前面i个值的最大或者最小的。那么第i+1个元素的值要是这i+1个中最小的或者最大的可能性是1/(i+1), 不是最大或者最小的概率就是1-1/(i+1), 也就是i/(i+1)...也就是这种情况下需要交换啊
看看黄蔚的书吧,这小子讲的很清楚,赞一个。他在huawei混的也挺好,呵呵

使用道具 举报

Rank: 2

声望
0
寄托币
112
注册时间
2004-10-29
精华
0
帖子
0
发表于 2005-10-19 12:43:07 |显示全部楼层

不解~

可是按照规则,要从最后一个元素向前俩俩交换,那么对于你的这个数组,
数值     2 3 4 5 6 7 8 9 10 1
i值       1 2 3 4 5 6 7 8  9  10
第一趟的时候就应该把最小的元素"1" 给排到第一的位置上去了啊.怎么还会出现现在这样的情况那?

使用道具 举报

Rank: 1

声望
0
寄托币
40
注册时间
2002-1-5
精华
0
帖子
0
发表于 2005-10-20 01:14:47 |显示全部楼层

题目有误

Elaine.W,你说的对。这道题目有错误。

如果是冒泡排序,不需要交换A[i]和A[i+1]。应该选择0。但是题目选项中没有0,只有
(A) 1/2  (B) i/(i+1)  (C) 1/n  (D) n/2

这是一道回忆题,所以或者应该在选项中加入(E) 0;或者把冒泡排序改为直接插入排序。

使用道具 举报

Rank: 2

声望
0
寄托币
112
注册时间
2004-10-29
精华
0
帖子
0
发表于 2005-10-20 11:11:33 |显示全部楼层
多谢~

使用道具 举报

RE: 请教一道CS_SUB题目 [修改]

问答
Offer
投票
面经
最新
精华
转发
转发该帖子
请教一道CS_SUB题目
https://bbs.gter.net/thread-350847-1-1.html
复制链接
发送
回顶部