一个简单的顺序搜索问题
若对有n个元素的有序顺序表和无序顺序表进行顺序搜索,试就下列三种情况分别讨论两者在等搜索概率时的平均搜索长度是否相同?
(1)搜索失败
(2)搜索成功,且表中只有一个关键码等于给定值k的对象
(3)搜索成功,且表中有若干个关键码等于给定值k的对象,要求一次搜索找出所有对象
麻烦稍微解释一下为什么,谢谢!
[解决办法]
(1)搜索失败 //不一样,因为有序的话,可以提前结束搜索,而无序的话必须搜索整个表
(2)搜索成功,且表中只有一个关键码等于给定值k的对象
(3)搜索成功,且表中有若干个关键码等于给定值k的对象,要求一次搜索找出所有对象 //不一样,因为有序的话,可以提前结束搜索,而无序的话必须搜索整个表
[解决办法]
(1)搜索失败 //不一样,无序顺序表的话要将表中所有的元素查找完毕,复杂度为n,而有序顺序表采用二分法的话只需要查找log(n)次就行了
(2)搜索成功,且表中只有一个关键码等于给定值k的对象 //无序顺序表的平均查找长度为你n/2,而有序的话复杂度也为log(n)。
(3)搜索成功,且表中有若干个关键码等于给定值k的对象,要求一次搜索找出所有对象 //这个比较难确定,因为无序顺序表的话平均搜索长度是其第一个关键码出现的位置,而有序表的话复杂度也为log(n)。
[解决办法]
若对有n个元素的有序顺序表和无序顺序表进行顺序搜索,试就下列三种情况分别讨论两者在等搜索概率时的平均搜索长度是否相同?
(1)搜索失败
(2)搜索成功,且表中只有一个关键码等于给定值k的对象
(3)搜索成功,且表中有若干个关键码等于给定值k的对象,要求一次搜索找出所有对象
顺序搜索下: 平均复杂度
(1) n/2 n
(2) n/2 n/2
(3) n/2 n/k