找到二个数组中第几大的数据。(答案讨论贴),如果想答题拿分的建议先去答题,再来看答案

fvflove fvflove 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

'解题思路
'设置二个指针,分别指向 数组A与数组B
'先设置A指针指向A的第N位。B指针指向B的第一位

'以下是循环部分
'如果A指针指向的数据大于B指针指向的数据。则直接返回A指针指向的数据。

'如果A指针指向的数据小于B指针指向的数据。则进行以下判断
'1.如果A指针指向的数据大于B指针指向的下一数据,则进行以下判断
'1.1 A指针指向的上一数据小于B指针指向的数据,则直接返回A指针上一指向的数据。
'1.2 A指针指向的上一数据大于B指针指向的数据,则直接返回B指针指向的数据。
'2.如果A指针指向的数据小于B指针指向的下一数据,则对指针进行移位。A指向上一位,B指向下一位

'因此,最差的情况下是,A指向循环至最第一位。循环N次。
'最好的情况下是:不会循环,第一次就成功/

'Arr_1 = Array(43, 42, 32, 18, 11, 9, 7, 0, -1)
'Arr_2 = Array(38, 37, 31, 15, 12, 5, -1)

'取第六位的示例:

'A指针指向数据 9 B指针指向数据 38
'9<38 进行判断 9<37
'A指向11 B指向 37
'11<37 进行判断 11<31
'A指向 18 B指向 31
'18<31 进行判断 18>15(子判断 33>31)返回31
'一共进行了二次循环


'不知我以上的解题思路是否有问题?
'欢迎大家讨论完善.

'如果大家另取方法,比我的这个方法的时间及空间复杂度更小的话.在此贴中又可获得50%的奖励分哦.
...全文
评论 13
收藏 已收藏
分享
返回顶部
fvflove
VB基础类 7,788 成员 197,583 内容