為什麼快指標速度一般為慢指標的兩倍?

時間 2021-05-29 23:49:47

1樓:XenoAmess

你有沒有考慮到達第乙個環之前的路徑?

如果你是高倍的話,那麼快指標將會飛快地到達第乙個環,而慢指標則會很慢才能到達第乙個環。

中間這段過程中快指標在第乙個環內將會無意義高速移動。

那並不是我們想要的。

2樓:Frango

你自己試一下就知道了,如果用三倍速和四倍速快指標,還能和慢指標恰好相遇嗎?那為什麼我們又要強調快指標和慢指標恰好相遇呢?遇到問題先自己試一下

3樓:Chaney Zorn

如果使用快慢指標的目的是尋找鍊錶中間點位置,那麼取一倍的速度是非常直觀的事情。

如果使用快慢指標的目的是判斷鍊錶是否是環形,那麼實際上我們希望的是快指針對慢指標的路程差精確等於環繞一周的長度(實際上我們可以取在兩周路程差相遇等情況,但是執行時間會加長),這樣兩個指標就相遇了。這樣我們取每步的速度差能夠被環長度整除的數字。但是由於我們的演算法預先並不知道環的周長,所以要取能夠被所有正整數整除的數字就只能是1了,只要兩個指標的速度差是一,那麼在乙個環裡面,它們就一定會相遇。

比如速度分別為1和2,也可以是2和3。

可見,快慢指標在不同的場景裡面取值策略是不一致的。在第二個場景裡,重要的是相對移動速度,而不是絕對速度,只要相對速度是1即可。那麼絕對速度要如何考慮呢?

我們一般希望計算機對記憶體執行間接定址的次數越少越好,因為每一次在鍊錶上的移動,都需要一次對記憶體的訪問。訪問次數越少越好,所以選取 1和2 比 2和3 要好一些。

這樣恰好就是兩倍的關係了。

如果存在其他場景,那麼依然還是要具體場景具體分析的。

為什麼常量指標必須用乙個非常量的位址初始化

黃達 inta 1 int constb a 這個b是乙個 指標常量 它指向的位址被理解為int型別。它可用int型別的變數 非常量 的位址來初始化。const inta 1 const int b a 這個b是乙個 常量指標 指向的位址被理解為const int型別的位址。它可用乙個const i...

為什麼長的一般的人的物件往往也很一般?

綾爾 長得好看的撩不到,長得醜的不願意將就,只剩長得一般的了,俗稱看得順眼。我一般都說看得順眼就成,實際上順眼這個詞的範圍太大,當然是顏值越高越歡喜啊 下午去趟新德里 此題偽命題色彩嚴重 為啥大部分不是混血的人找的物件也不是混血,為啥大部分不會後空翻的人找的物件也不是後空翻?為什麼大部分不會剝河豚的...

為什麼家境一般長相一般的女生會要求男生有車有房還要有十幾萬乃至幾十萬的彩禮錢?

懟天對地懟sb 我就是那個長相一般,家境一般,下面還有個弟弟的女生。我身邊大多數都是這樣的女生,佔了百分之九十吧。我已經有主了,我當時的要求就是在工作的地方首付買房一起還貸,首付不夠也可以借一點,但是一定要買房,車這些我無所謂,彩禮按著當地一般標準幾萬塊,彩禮我都帶回自己小家的,我也有弟弟,我的要求...