我正在做一个代码挑战,给定的数字,我必须找到最小的差异。对于为例:找到bash中排序数组中数字的最小差异
[3,5,8,9]
Result : 1 (9-8)
的问题是,在最后的测试,以实现拼图使用量非常大的数字,我的代码是不够优化。
之前找到minimu区别,我的阵列一样,排序:
IFS=$'\n' sorted=($(sort -n <<<"${array[*]}"))
然后,我做一个for循环在阵列上找到最小的,但它需要太多的时间,所以我试图做i+4
而不是i++
,但我不认为这是真正的问题。
这里是我的代码,以找到最小:
smallest=5000
for ((i=2; i<N; i=$((i+1))));do
diff=$((${sorted[i]}-${sorted[i-1]}))
if [ $diff -lt $smallest ]; then
smallest=$diff
fi
done
你有什么我可以做的事情有足够optimzed要经过测试的任何想法?顺便说一句,我对Bash几乎一无所知,我在python中用usaly代码。
有什么问题吗?它的复杂性是N(LOG N)..那么问题是什么? – SMA
我无法在编码上实现代码挑战,因为“它没有足够优化”,正如它在网站上所说的@SMA –