• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            雁過無痕

              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::

            《編程之美》讀書筆記092.17 數(shù)組循環(huán)移位

             

            對長度為n的數(shù)組(ab)左移k位,最直接的方法,就是用stlrotate函數(shù)(stl針對三種不同的迭代器,提供了三個版本的rotate)。但在某些情況下,用stlrotate效率極差。

            對數(shù)組循環(huán),可以采用的方法有:

                 動態(tài)分配一個同樣長度的數(shù)組,將數(shù)據(jù)復(fù)制到該數(shù)組并改變次序,再復(fù)制回原數(shù)組。

                 利用ba=(br)r(ar)r=(arbr)r,通過三次反轉(zhuǎn)字符串。

            ③ 分組交換(盡可能使數(shù)組的前面連續(xù)幾個數(shù)為所要結(jié)果):

            a長度大于b,將ab分成a0a1b,交換a0b,得ba1a0,只需再交換a1 a0

            a長度小于b,將ab分成ab0b1,交換ab0,得b0ab1,只需再交換a b0

            通過不斷將數(shù)組劃分,和交換,直到不能再劃分為止。分組過程與求最大公約數(shù)很相似。

            ④ 所有序號為 (i+t*k) % n (i為指定整數(shù),t為任意整數(shù)),會構(gòu)成一個循環(huán)鏈(共有gcd(n,k)個,gcdnk的最大公約數(shù)),每個循環(huán)鏈上的元素只要移動一個位置即可,總共交換了n次。

            stlrotate的三種迭代器,分別使用了后三種方法。

            多數(shù)情況下,前三種方法效率都比較高,第一種方法過分要求內(nèi)存,第四種方法,元素間平均交換次數(shù)最少,理論上效率應(yīng)該是最高的,但在nk都很大時,其效率相當(dāng)差(由于每次交換訪問的內(nèi)存不連續(xù),在nk比較大時,內(nèi)存訪問開銷很大,因為cache line命中率很低,又不斷跨頁訪問內(nèi)存。)。方法三的平均交換次數(shù)要少于方法二,但判斷次數(shù)相對要多,效率相差不是太大,在大數(shù)組時方法三效率比較高,但同一個小數(shù)組左移幾十萬次,方法二效率略高,畢竟整個數(shù)組都可以被cache,內(nèi)存訪問開銷小,判斷次數(shù)對效率影響較大。

             

            測試代碼
            posted on 2010-08-16 00:11 flyinghearts 閱讀(978) 評論(0)  編輯 收藏 引用 所屬分類: 編程之美
            国产999精品久久久久久| 久久九九兔免费精品6| 久久九九有精品国产23百花影院| 久久久久AV综合网成人| 国产一级持黄大片99久久| 久久996热精品xxxx| 久久人人爽人人爽人人片AV不| 72种姿势欧美久久久久大黄蕉| 亚洲午夜久久影院| 老男人久久青草av高清| 91精品婷婷国产综合久久| 99蜜桃臀久久久欧美精品网站| 精品久久久久久国产潘金莲| 伊人久久大香线蕉综合热线| 国产精品免费看久久久| 欧美久久天天综合香蕉伊| 人妻少妇久久中文字幕| 久久久中文字幕日本| 久久精品国产影库免费看| 伊人久久大香线焦AV综合影院| 精品久久久久久无码免费| 国产精品久久永久免费| 亚洲级αV无码毛片久久精品| 久久久这里有精品中文字幕| 91精品国产综合久久四虎久久无码一级| 久久久久久久久66精品片| 精品久久久久久无码免费| 伊人久久综在合线亚洲2019 | 久久久久久久99精品免费观看| 欧美久久久久久| 久久精品国产精品亜洲毛片| av无码久久久久久不卡网站| 久久精品无码专区免费东京热| 亚洲欧美成人久久综合中文网| 国产99久久久国产精品~~牛 | 午夜精品久久久久久久无码| 伊人久久免费视频| 中文字幕亚洲综合久久2| 久久天天躁狠狠躁夜夜av浪潮| 久久综合久久综合九色| 免费国产99久久久香蕉|