關於莫隊算法時間複雜度的分析

這兩天看了莫隊,對於莫隊算法感覺實現還是很簡單的,但是時間複雜度的理解好像網上的文章都沒有講的太明白(也可能是我理解能力有問題Orz);

莫隊的時間複雜度的貢獻主要來自於L,R指針的移動:

L跨塊轉移的次數O(sqrt(n)),跨塊轉移的總距離爲O(n);即不跨塊轉移的次數爲O(n-sqrt(n)),每次的查詢的複雜度是O(sqrt(n));

所以L的時間複雜度爲O(n)+O(n-sqrt(n))*O(sqrt(n))=O(n*sqrt(n));


R在每一塊內的轉移複雜度爲O(n);因爲在每塊內的元素的r是無序的;

一共有sqrt(n)塊;

所以R的時間複雜度爲O(n*sqrt(n));

所以總的時間複雜度爲O(n*sqrt(n));

本人蒟蒻,如果有什麼錯誤之處歡迎大佬批評指正,Orz~~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章