我正在做一個代碼挑戰,給定的數字,我必須找到最小的差異。對於爲例:找到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 –