algorithm - 需要有关二进制搜索算法错误的帮助

标签 algorithm fortran binary-search fortran95

使用 g95编译器,我有一个错误:

Error: Operands of comparison operator '.EQ.' at (1) are LOGICAL(4)/LOGICAL(4)

我不知道这是什么意思。我包括子程序。您有解决此问题的想法吗?

非常感谢您的宝贵时间。

  SUBROUTINE search(iarray, ItemSought, Found, Location)
CHARACTER(20), DIMENSION(50),INTENT(IN)::itemarray
CHARACTER(20)::ItemSought
LOGICAL, INTENT(OUT)::Found
INTEGER, INTENT(OUT)::Location
INTEGER:: First, Last, Middle

WRITE(*,'(1x,A)',ADVANCE="NO"),"What are you searching for? "
READ*, ItemSought

First=1
Last=SIZE(Iarray)
FOUND = .FALSE.

DO
    IF ((First > Last) .OR. Found) RETURN
        Middle = (First+Last)/2
    IF (ItemSought < Iarray(Middle)) THEN
        Last=Middle-1
    ELSE IF (ItemSought > Iarray(Middle)) THEN
        First=Middle+1
    ELSE
        Found = .TRUE.
        Location = Middle
    END IF
END DO


IF (Found == .TRUE.) THEN
PRINT*, Itemsought

END SUBROUTINE

最佳答案

我不想承认我上次使用 FORTRAN 是什么时候,但它看起来确实与我内存中的大不相同。所以这只是一个猜测。

根据错误消息我会说它在这一行(你没有说是哪一行):

IF (Found == .TRUE.) THEN

同样只是猜测,您通常不会通过与 true/false 比较来测试逻辑值,而是直接使用它:

IF (Found) THEN

关于algorithm - 需要有关二进制搜索算法错误的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5705510/

相关文章:

arrays - Fortran 中没有 Allocate() 的可变大小数组

java - 如果在JAVA中的二分查找中找不到数字,该如何返回数字应去的位置的索引

java - 在Java中二进制搜索字符串

python - 用虚拟值编写伪代码

c - 试图了解Bubblesort函数

loops - Fortran 2018+ 中过时的 DO 循环

perl - 如何在 Perl 中实现二分查找?

algorithm - 如何知道在带有 TerracottaJobStore 的 Quartz-Scheduler 中将在哪个节点上执行作业?

algorithm - 化简 log n/3i 的总和

memory - 当我增加稀疏矩阵的大小时,SuperLU dgstrf 返回内存分配失败