• <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>

            雁過無痕

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

             

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

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

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

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

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

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

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

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

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

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

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

             

            測(cè)試代碼
            posted on 2010-08-16 00:11 flyinghearts 閱讀(979) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 編程之美
            99精品久久久久久久婷婷| 一本久道久久综合狠狠爱| 国产精品久久成人影院| 69久久精品无码一区二区| 亚洲天堂久久精品| 香蕉aa三级久久毛片| 一本一本久久A久久综合精品| 久久99精品久久只有精品| 青青青青久久精品国产h| 伊人色综合久久天天网| 久久精品国产半推半就| 久久国产AVJUST麻豆| a高清免费毛片久久| 亚洲国产天堂久久久久久| 日本精品久久久久中文字幕| 久久99九九国产免费看小说| 国产精品成人久久久久久久| 亚洲va中文字幕无码久久不卡 | 久久久久无码精品国产不卡| 亚洲国产成人久久综合一| 色偷偷久久一区二区三区| 久久性生大片免费观看性| 久久综合九色综合欧美狠狠| 无码人妻精品一区二区三区久久| 色悠久久久久久久综合网| 亚洲一本综合久久| 2021久久国自产拍精品| 婷婷伊人久久大香线蕉AV| 人妻无码αv中文字幕久久琪琪布 人妻无码精品久久亚瑟影视 | 久久99精品国产麻豆宅宅| 人妻精品久久久久中文字幕| 88久久精品无码一区二区毛片 | 亚洲国产婷婷香蕉久久久久久| 国产91色综合久久免费分享| 久久夜色精品国产网站| 久久久久久毛片免费播放| 日本人妻丰满熟妇久久久久久| 亚洲AV无码久久| 久久精品国产亚洲AV香蕉| 国产精品99久久99久久久| 国产精品久久毛片完整版|