如何解决算法伪代码
我有伪代码:
Algorithm exists(A,n,x):
lo=0
hi=n-1
while hi>=lo:
mid=floor((hi+lo)/2):
if x>A[mid]:
lo=mid+1
else: if x<A[mid]:
hi=mid-1
else:
return True
return False
和数组:
A[0]=1,A[1]=5,A[2]=6,A[3]=10,A[4]=12,A[5]=16,A[6]=17,A[7]=43
然后我必须找到存在的(A,4,17)返回。
然后我们有l0=0
和hi=n-1=4-1=3
,然后是hi>l0
。
我们得到了mid=floor((hi+lo)/2)=floor((3+0)/2)=1
(底数是否舍入为1
?)。
我们看到x<A[1]
是因为4<5
。然后我认为伪代码返回:hi=mid-1=1-1=0
?
解决方法
您编写的代码,它是二进制搜索伪代码。通过二进制搜索,您可以在排序的数组中搜索数字。
在您的代码中,您的解释是错误的。让我解释一下原因。
您的数组:TransactionCheckRequirementsIntent() {
this.$googleAction.$transaction.checkRequirements({
requestDeliveryAddress: false,},{
actionProvidedOptions: {
"paymentType": "PAYMENT_CARD","displayName": "VISA-1234"
},})
this.ask('Check requirements');
}
,A[0]=1
,A[1]=5
,A[2]=6
,A[3]=10
,A[4]=12
,A[5]=16
,{{ 1}}
然后,根据您的算法,您想找到A[6]=17
,
A[7]=43
,exists(A,4,17)
,A resembles your array
因此,据此,您在最后一行中的解释是错误的,因为在第一次迭代之后,n=4
然后它将执行x=17
条件,因为
mid=1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。