• <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ù)復制到該數(shù)組并改變次序,再復制回原數(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ù)最少,理論上效率應該是最高的,但在nk都很大時,其效率相當差(由于每次交換訪問的內(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 閱讀(968) 評論(0)  編輯 收藏 引用 所屬分類: 編程之美
            青青草原综合久久| 一本色道久久88—综合亚洲精品| 精品久久久久久中文字幕大豆网| 99久久综合国产精品免费| 久久久久久曰本AV免费免费| 久久中文骚妇内射| 久久久久亚洲?V成人无码| 亚洲色欲久久久综合网| 亚洲国产精品久久久久| 国产A三级久久精品| 嫩草影院久久99| 香蕉久久av一区二区三区| 国产高潮国产高潮久久久91 | 国内精品伊人久久久久777| 99久久精品国产麻豆| 久久久久99这里有精品10| 欧美激情精品久久久久| 伊人久久大香线蕉av不变影院| 狠狠色综合久久久久尤物| 久久夜色精品国产欧美乱| 精品人妻伦九区久久AAA片69| 精品久久久久久无码人妻蜜桃| 人妻精品久久久久中文字幕69| 欧美日韩成人精品久久久免费看| 伊人久久大香线蕉精品| 日本强好片久久久久久AAA | 久久久无码精品亚洲日韩蜜臀浪潮| 国产V综合V亚洲欧美久久| 香蕉久久夜色精品升级完成| 久久人人添人人爽添人人片牛牛| 久久精品国产一区二区| 51久久夜色精品国产| 久久香蕉国产线看观看99| 999久久久免费精品国产| 久久久av波多野一区二区| 国产精品免费看久久久| 久久国产精品成人影院| 精品午夜久久福利大片| 国产高清美女一级a毛片久久w| 久久―日本道色综合久久| 国产精品成人99久久久久91gav |