簡體   English   中英

使用JavaScript進行二進制搜索

[英]Binary search using javascript

我正在將C ++代碼轉換為此處的 javascript。 其余代碼看起來不錯,但以下函數有問題。 while循環中的第一行,第二行引發錯誤Uncaught ReferenceError: Invalid left-hand side in assignment 當我將其更改為m = (A[m] >= key ? r : l); 然后這個循環變成無限。 如何在javascript中解決?

    function CeilIndex(A, l, r, key) {
        var m;

        while( r - l > 1 ) {
            m = l + (r - l)/2;
            (A[m] >= key ? r : l) = m; // ternary expression returns an l-value
        }

        return r;
    }
if (A[m] >= key) {
    r = m;
} else {
    l = m;
}

除屬性外,JavaScript不能具有可變的左值(即,可以執行obj[A[m] >= key ? 'r' : 'l'] = m ,但不建議您這樣做)。

您只需要適當地突破左側即可。 我不知道您要做什么,但是假設您要為rl分配m

if (A[m] >= key) {
    r = m;
} else {
    l = m;
}

在JavaScript中,您可以改為:

A[m] >= key ? r = m : l = m;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM