青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

那誰的技術博客

感興趣領域:高性能服務器編程,存儲,算法,Linux內核
隨筆 - 210, 文章 - 0, 評論 - 1183, 引用 - 0
數(shù)據(jù)加載中……

[算法問題]交換兩個子數(shù)組的元素值

問題描述:
?設a[0:n-1]是一個有n個元素的數(shù)組,k(0<=k<=n-1)是一個非負整數(shù).試設計一個算法將子數(shù)組
a[0:k]與a[k+1:n-1]換位.要求算法在最壞情況下耗時O(n), 且只用到O(1)的輔助空間.

這個問題比較常見了,一般的辦法就是分別把兩個子數(shù)組分別逆序排列,然后對整個數(shù)組進行逆序排列.也就是說,對一個數(shù)組
a[8] = {1,2,3,4,5}而言,如果k = 2,那么首先對兩個子數(shù)組進行逆序操作得序列{3, 2,1,5,4},然后對整個數(shù)組逆序排列得到{4,5,1,2,3}.

下面給出的是另一種辦法,采用的是遞歸方法,結合前面的例子講述一下思想,在例子中前面的元素數(shù)量大于后面的元素數(shù)量(前面是3個,后面是兩個),那么先以含有比較少的元素子數(shù)組的數(shù)量為標準進行交換,得到序列:{4,5,3,2,1},中間多出來的3沒有參與到這次交換之中,這個時候含有比較少的元素的子數(shù)組{4,5}已經(jīng)被交換到了最后合適的位置,后面的操作可以不必考慮它們了.對剩余子數(shù)組的操作顯然和原來的問題有類似的行為,我們要做的是交換序列{3}和序列{2,1}的位置,因此這是一個遞歸可以解決的問題.

應該說,兩種算法各有千秋吧.前一種辦法最壞的時候每個元素都要移動兩次才能到達最后合適的位置,但是第二種辦法在兩個數(shù)組元素數(shù)量相同的時候只需要移動一次元素就可以到達合適的位置了.
當然了,這個辦法不如前一個方法那么"聰明",要寫正確也不是很容易,但是可以作為分治法或者是遞歸法解決問題的一個實例.


#include?<stdio.h>

void?DisplayArray(int?*pArray,?int?nLen)
{
????
for?(int?i?=?0;?i?<?nLen;?++i)
????
{
????????printf(
"array[%d]?=?%d\n",?i,?pArray[i]);
????}

}


void?SwapSubArray(int?*pArray1,?int?*pArray2,?int?n)
{
????
int?temp;
????
for?(int?i?=?0;?i?<?n;?++i)
????
{
????????temp?
=?*(pArray1?+?i);
????????
*(pArray1?+?i)?=?*(pArray2?+?i);
????????
*(pArray2?+?i)?=?temp;
????}

}


void?ChangeArray(int?*pArray,?int?nLen,?int?k)
{
????
if?(NULL?==?pArray)
????????
return;
????
if?(k?<?0?||?k?>?nLen?-?1)
????????
return;

????
int?m,?n,?num;
????
if?(nLen?-?k?-?1?>?k?+?1)????????????????????????????????????//?如果后半部分的元素多
????{
????????m?
=?nLen?-?k?-?1?-?k?-?1;????????????????????????????????//?m是兩部分元素數(shù)量之差
????????SwapSubArray(pArray,?pArray?+?k?+?1?+?m,?k?+?1);????????//?交換兩部分元素數(shù)目相同的部分
????????ChangeArray(pArray,?nLen?-?k?-?1,?k);
????}

????
else?if?(nLen?-?k?-?1?<?k?+?1)????????????????????????????????//?如果前半部分的元素多
????{
????????m?
=?k?+?1?-?nLen?+?k?+?1;
????????SwapSubArray(pArray,?pArray?
+?k?+?1,?k?+?1?-?m);????????//?交換兩部分元素數(shù)目相同的部分
????????ChangeArray(pArray?+?nLen?-?k?-?1,?k?+?1,?m?-?1);
????}

????
else????????????????????????????????????????????????????????//?前后兩部分元素數(shù)量相同
????{
????????SwapSubArray(pArray,?pArray?
+?k?+?1,?k?+?1);
????}

}


int?main()
{
????
int?array[]?=?{0,?1,?2,?3,?4,?5,?6,?7};
????
int?nLen?=?sizeof(array)?/?sizeof(array[0]);
????DisplayArray(array,?nLen);

????ChangeArray(array,?nLen,?
1);
????printf(
"after?change:\n");
????DisplayArray(array,?nLen);

????
return?1;
}


posted on 2006-09-26 23:21 那誰 閱讀(1794) 評論(1)  編輯 收藏 引用 所屬分類: 算法與數(shù)據(jù)結構

評論

# re: [算法問題]交換兩個子數(shù)組的元素值  回復  更多評論   

遞歸方法堆棧的開銷是題目要求的O(1)嗎?
2006-09-27 21:05 | elife
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美成人精品h版在线观看| 国产精品一区在线观看| 亚洲激情偷拍| 一本色道久久综合亚洲精品高清| 亚洲开发第一视频在线播放| 黄色国产精品一区二区三区| 欧美在线3区| 久久嫩草精品久久久精品| 一区二区欧美在线观看| 亚洲欧美日韩成人| 亚洲主播在线| 亚洲——在线| 亚洲欧美日韩直播| 午夜欧美大尺度福利影院在线看 | 99精品福利视频| 美女在线一区二区| 久久亚洲电影| 亚洲精品国产精品乱码不99| 亚洲娇小video精品| 亚洲一区影音先锋| 欧美中文字幕| 欧美日韩亚洲一区三区| 欧美视频一区在线观看| 国产精品乱码久久久久久| 国产亚洲午夜高清国产拍精品| 国产美女精品视频免费观看| 亚洲精品国产精品国自产在线 | 久久精品欧美日韩精品| 蜜臀久久99精品久久久久久9| 久久躁日日躁aaaaxxxx| 午夜久久美女| 亚洲人成免费| 亚洲一区二区三区三| 欧美1级日本1级| 欧美视频一区二区三区四区| 国产欧美一区二区三区久久| 一区二区欧美在线观看| 欧美在线视屏| 一区二区三区欧美激情| 久久精品欧美| 欧美日韩日本视频| 午夜视频精品| 久久精品首页| 亚洲第一视频| 久久国内精品视频| 女生裸体视频一区二区三区| 国产热re99久久6国产精品| 亚洲国产精品久久久久秋霞蜜臀| 99国产精品久久久久久久久久| 久久亚洲精品一区二区| 日韩视频三区| 久久国产一二区| 欧美精品精品一区| 国产亚洲一二三区| 欧美一级夜夜爽| 亚洲国产日韩综合一区| 老色批av在线精品| 国产精品久久精品日日| 亚洲精品乱码视频| 蜜臀av国产精品久久久久| 亚洲午夜在线| 欧美视频一区在线观看| 亚洲精品孕妇| 久久久久久综合| 欧美中在线观看| 国产精品分类| 欧美亚洲一区二区在线观看| 亚洲国产综合在线看不卡| 欧美一区三区三区高中清蜜桃| 国产精品欧美日韩久久| av成人黄色| 中文欧美日韩| 久久福利影视| 国产午夜精品美女视频明星a级 | 一本久久综合亚洲鲁鲁| 99re66热这里只有精品4 | 亚洲永久精品国产| 欧美色图一区二区三区| 亚洲欧美日韩人成在线播放| 亚洲精选视频免费看| 欧美午夜不卡在线观看免费| 99精品欧美一区| 亚洲大片免费看| 欧美猛交免费看| 亚洲精品午夜| 在线视频日本亚洲性| 国产精品国产三级国产专区53| 夜夜嗨av一区二区三区网页| 亚洲午夜精品网| 国产精品美女久久久久久免费 | aaa亚洲精品一二三区| 免费成人高清| 欧美久久电影| 在线亚洲国产精品网站| 亚洲欧美日本视频在线观看| aaa亚洲精品一二三区| 亚洲国产欧美另类丝袜| 国产精品第十页| 亚洲国产日韩欧美在线99| 欧美成人日韩| 欧美暴力喷水在线| 国产精品毛片a∨一区二区三区|国| 国产一区二区三区视频在线观看| 欧美激情影音先锋| 欧美另类专区| 久久另类ts人妖一区二区| 久久久精品国产一区二区三区 | 亚洲国产成人高清精品| 欧美成人中文| 国产伦精品一区二区三区免费迷| 久久激五月天综合精品| 久久久www成人免费无遮挡大片 | 好看的日韩视频| 欧美电影在线观看| 国产欧美一区二区三区另类精品| 久久色在线观看| 欧美风情在线观看| 午夜日本精品| 久久久久天天天天| 欧美伊人影院| 蜜桃av一区| 免费看黄裸体一级大秀欧美| 欧美日韩国产美| 亚洲日本欧美| 亚洲一区二区成人在线观看| 一区二区在线视频播放| 亚久久调教视频| 99精品热视频| 欧美激情一区三区| 久久精品水蜜桃av综合天堂| 国产精品夫妻自拍| 亚洲第一精品夜夜躁人人爽| 国产精品视频导航| 在线视频精品一| 亚洲精品一区二区三区樱花 | 亚洲中字在线| 久久免费视频在线观看| 亚洲欧美另类在线观看| 免费高清在线一区| 亚洲国产欧美另类丝袜| 午夜久久美女| 一区二区不卡在线视频 午夜欧美不卡'| 久久久亚洲高清| 欧美诱惑福利视频| 国产日韩欧美高清免费| 一本大道久久a久久精品综合 | 麻豆乱码国产一区二区三区| 老鸭窝毛片一区二区三区| 国产精品久久久久久超碰| 亚洲在线成人| 欧美一区二区三区四区高清| 国产精品综合不卡av| 亚洲精品欧美日韩| 最新国产成人av网站网址麻豆| 欧美一区二区观看视频| 亚洲欧美精品| 国产日韩欧美| 性欧美18~19sex高清播放| 欧美精品在线视频| 亚洲视频中文字幕| 一区二区三区视频在线观看 | 久久久久国产一区二区三区四区 | 欧美高清不卡| 欧美国产日韩xxxxx| 国产精品99久久99久久久二8 | 久久全球大尺度高清视频| 亚洲国产精品专区久久| 久久中文字幕导航| 麻豆精品精品国产自在97香蕉| 亚洲欧洲久久| 欧美黄色一级视频| 午夜伦欧美伦电影理论片| 久久精品欧洲| 亚洲另类一区二区| 欧美日韩一区二区免费在线观看 | 久久久久一区| 蜜桃av一区二区在线观看| 伊人狠狠色j香婷婷综合| 午夜欧美电影在线观看| 亚洲永久在线| 国产亚洲一区二区精品| 女人天堂亚洲aⅴ在线观看| 亚洲人久久久| 亚洲男人的天堂在线| 国内精品久久久久伊人av| 欧美日本国产在线| 亚洲影视在线播放| 亚洲国产一成人久久精品| 亚洲欧美制服中文字幕| 欧美电影免费观看| 亚洲摸下面视频| 免费成人在线视频网站| 欧美一区二区视频97| 黑丝一区二区三区| 国产精品v片在线观看不卡 | 最新中文字幕一区二区三区| 欧美激情亚洲激情| 久久久久中文| 一本一本久久| 亚洲欧洲精品一区二区精品久久久|