在一个数组中寻找最小差值的最快算法是什么?

5

6
如果数值是整数且范围固定,可以使用基数排序(radix sort)以O(n)的时间进行排序。 - templatetypedef
2个回答

3
我认为排序和比较是您最好的选择。可以使用以下方法:
```` 我认为排序和比较是您最好的选择。可以使用以下方法: ````
function minDiff( arr ) {
    var min,
        temp,
        initDiff = false,
        arr = arr.sort( function(a, b){return a-b} ),
        last = arr.length - 1,
        i;

    for ( i = 0; i < last; i++ ) {

        if ( !initDiff ) {            
            min = arr[i + 1] - arr[i];
            initDiff = true;
        } else {            
            temp = arr[i + 1] - arr[i];

            if ( temp < min ) {            
                min = temp;            
            }            
        }
    }

    return min; 
}

var myArr = [ 1, 8, 5, 96, 20, 47 ],
    min = minDiff( myArr );

console.log( min ); // 3

那么...这里的复杂度是什么,你认为它能变得更好吗(比O(nlogn)更优)?这是提问者的问题。 - sehe

2

1
回答太糟糕了 :(. 元素唯一性问题很麻烦。哈希哈希哈希! - Rob Neuhaus
嗯,好的,为什么元素唯一性是个问题?你说的“哈希”是指什么?顺便问一下,你最喜欢的编程语言是什么? :) - Caffeinated

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接