2017-09-04 67 views
0

如何在向量中高效地找到一個0,假設該向量中至少有一個零點?如何在向量中找到一個零元素

假設有一個向量v = [1; 0; 1; 3; 4; 0; 0]。我知道find(v==0)將返回v的零元素的所有索引,但因爲我只想要這些零中的一個,所以哪一個都可以,這似乎不是很有效。有沒有更好的方法,還是應該使用while循環的for

+1

嘗試使用find(〜Ⅴ類,1) – JLev

回答

2

find(v==0,1,'first')只會給你一個零實例,即第一個。 find(v==0,1,'last')也是如此,它會給你最後一個。由於find在第一次遇到零(從頂部或底部)後會終止,因此速度會更快。

你提到任何一個都行,這樣就行了。對於一個隨機0,它會更加涉及。

1

在實踐

在正常情況下,我會考慮用最簡單的解決方案的最佳實踐,已在該意見中提到:

find(~v,1) 

理論改進

請注意,它對完整向量執行操作,因爲它首先完全評估它是否爲非零值。

如果你有一個非常長的向量,並期望找到一個非常快的零(例如在第一個log(n)條目中),它會給你一個更好的複雜性來使用while循環,在找到零時停止。

這就是說,矢量操作非常高效,循環有一些開銷。因此,如果一個循環比找到更快,我會感到驚訝。


去爲最佳

當然這一切是如何工作的,如果你真的想獲得最佳的性能,這一切都降低了尋找的基本規則是什麼在起作用最快:

嘗試所有可能的選擇,看看有什麼實際工作速度最快的爲您解決

相關問題