• <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)  編輯 收藏 引用 所屬分類: 編程之美
            久久青青草原国产精品免费| 五月丁香综合激情六月久久| 91亚洲国产成人久久精品| 久久久91精品国产一区二区三区 | 性欧美丰满熟妇XXXX性久久久| 久久精品久久久久观看99水蜜桃| 亚洲AV日韩精品久久久久久久| 91精品国产91久久久久久蜜臀| 精品久久久久久久久久久久久久久| 国产ww久久久久久久久久| 97视频久久久| 2021久久国自产拍精品| 久久久久久青草大香综合精品| 伊人久久大香线蕉综合Av| 亚洲嫩草影院久久精品| 中文无码久久精品| 国产精品无码久久四虎| 欧美午夜精品久久久久免费视| 国产精品99久久久久久猫咪| 色狠狠久久AV五月综合| 欧美久久一区二区三区| 国产成人久久AV免费| 久久精品aⅴ无码中文字字幕不卡| 狠狠色丁香久久婷婷综| 伊人久久精品无码二区麻豆| 少妇被又大又粗又爽毛片久久黑人| 久久婷婷成人综合色综合| 色狠狠久久综合网| 久久久久国产一级毛片高清板| 久久国产精品久久精品国产| 精品久久亚洲中文无码| 亚洲午夜无码久久久久小说| 久久精品免费观看| 国产国产成人精品久久| 色欲综合久久中文字幕网| 免费久久人人爽人人爽av| 欧美日韩精品久久久免费观看| 久久AⅤ人妻少妇嫩草影院| 精品午夜久久福利大片| 久久午夜电影网| 好久久免费视频高清|