Skip to content

NaN 导致的死循环 #16

@winnieBear

Description

@winnieBear
function swap (arr, n, m) {
    [arr[n], arr[m]] = [arr[m], arr[n]]
}

function partion (a, l, r, p) {
    swap(a, p, l)
    let i = l, j = r, pivot = a[ l ]
    while(i < j) {
        while(a[j] >= pivot && i < j) {
            j--
        }
        a[i] = a[j]
        while(a[i] <= pivot && i < j) {
            i++
        }
        a[j] = a[i]
    }
    a[i] = pivot

    return i
}
var arr =  [-1, -1, -1, -1, -1, -1, undefined, -1, -1, -1, -1]
var p = partion(arr,0,arr.length-1,0) // 执行完跟没执行一样,

根本原因是:

NaN >= -1 => false
NaN <= -1  => false
NaN == -1  => false
NaN == NaN => false

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions