锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品99久久久久久久女警,农夫在线精品视频免费观看,国产日韩精品视频一区http://m.shnenglu.com/AutomateProgram/category/8931.html褰撻煶涔愬拰浼犺鍦ㄦ繁澶滀腑娌夊瘋鍚庯紝紼嬪簭鐨勬瘡涓瓧絎﹁繕鍦ㄨ煩鍔紒zh-cnMon, 13 Feb 2012 21:56:36 GMTMon, 13 Feb 2012 21:56:36 GMT60鍦╳indows涓紪璇憇phinx1.10beta--coreseek(綾諱技)(緲昏瘧)http://m.shnenglu.com/AutomateProgram/archive/2012/02/13/165470.html婕傛紓婕傛紓Mon, 13 Feb 2012 03:50:00 GMThttp://m.shnenglu.com/AutomateProgram/archive/2012/02/13/165470.htmlhttp://m.shnenglu.com/AutomateProgram/comments/165470.htmlhttp://m.shnenglu.com/AutomateProgram/archive/2012/02/13/165470.html#Feedback0http://m.shnenglu.com/AutomateProgram/comments/commentRss/165470.htmlhttp://m.shnenglu.com/AutomateProgram/services/trackbacks/165470.html鍦╳indows涓紪璇憇phinx1.10beta

鍘熸枃鍦板潃錛?a >http://blog.aulin.no/compiling-sphinx-110beta-on-windows

涓嬮潰鏄紩瀵煎ぇ瀹跺浣曞湪windows涓婄紪璇憇phinx 1.10beta

1. 涓嬭澆sphinx婧愮爜(http://sphinxsearch.com/downloads/sphinx-1.10-beta.tar.gz)
    娉細鏈鏂扮増鏈湪錛?a >http://sphinxsearch.com/downloads/archive/ 涓?br /> 
2. 鍥犱負sphinx浣跨敤鍒癕ySQL, LibExpat and LibIConv,鍥犳鍦ㄧ紪璇戜箣鍓嶉渶瑕侀厤緗繖浜涘簱錛?br />   涓嬭澆MySQL鐨勫紑鍙戠幆澧?a >http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.52-win32.msi/from/http://mysql.borsen.dk/錛屽畨瑁呭紑鍙戠粍浠?br />   涓嬭澆LibExpat(http://garr.dl.sourceforge.net/project/expat/expat_win32/2.0.1/expat-win32bin-2.0.1.exe)
   涓嬭澆LibIConv (http://netcologne.dl.sourceforge.net/project/gnuwin32/libiconv/1.9.2-1/libiconv-1.9.2-1.exe)
  
3. 鍦╯hpinx.h涓彲浠ラ厤緗拰縐婚櫎sphinx闇瑕佺殑緇勪歡,濡傚彲浠ョЩ闄ゅPostgreSQL 鐨勬敮鎸?/p>

4. 鍦╲isual studiao 08 涓墦寮 Sphinx08.sln

5. 娣誨姞mysql 鐨刬nclude璺緞(C:\Program Files (x86)\MySQL\MySQL Server 5.1\include) to all projects (鍙沖嚮 - Properties - Configuration Properties - C/C++ - General - Additional Include Directories).

6. 娣誨姞mysql鐨刲ib璺緞(C:\Program Files (x86)\MySQL\MySQL Server 5.1\lib\opt) to all projects excluding "libsphinx" (鍙沖嚮 - Properties - Configuration Properties - Linker - General - Additional Library Directories)

7. 鍦ㄩ櫎浜唋ibsphinx鐨勬墍鏈夊伐紼嬩腑錛屾坊鍔燣ibExpat鐨勮礬寰?C:\Program Files (x86)\Expat 2.0.1\Bin)(鍙沖嚮 - Properties - Configuration Properties - Linker - General - Additional Library Directories)

8. 鍦ㄩ櫎浜唋ibsphinx鐨勬墍鏈夊伐紼嬩腑錛屾坊鍔燣ibIConv 鐨勮礬寰?C:\Program Files (x86)\GnuWin32\lib)(鍙沖嚮 - Properties - Configuration Properties - Linker - General - Additional Library Directories)

9. 緙栬瘧B(tài)uild! (F6)



婕傛紓 2012-02-13 11:50 鍙戣〃璇勮
]]>
嫻呰皥shuffle綆楁硶--鎾斁鍣ㄧ殑鍙︿竴縐嶉殢鏈虹畻娉?/title><link>http://m.shnenglu.com/AutomateProgram/archive/2010/10/11/129458.html</link><dc:creator>婕傛紓</dc:creator><author>婕傛紓</author><pubDate>Mon, 11 Oct 2010 09:25:00 GMT</pubDate><guid>http://m.shnenglu.com/AutomateProgram/archive/2010/10/11/129458.html</guid><wfw:comment>http://m.shnenglu.com/AutomateProgram/comments/129458.html</wfw:comment><comments>http://m.shnenglu.com/AutomateProgram/archive/2010/10/11/129458.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/AutomateProgram/comments/commentRss/129458.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/AutomateProgram/services/trackbacks/129458.html</trackback:ping><description><![CDATA[鍘熸枃鍦板潃錛?a >http://www.cnblogs.com/huaping-audio/archive/2008/09/09/1287985.html</a><br><br> <p>shuffle綆楁硶錛屾垜鎶婁粬鍙仛媧楃墝綆楁硶錛屽畠鐨勭洰鏍囨濂戒笌鍚勭鐨剆ort綆楁硶鐩稿弽錛屽嵆鎶婁竴涓湁搴?鎴栬呮棤搴?鐨勪竴緋誨垪鍏冪礌鎵撲貢錛屼互婊¤凍闇姹傘?br><br>涓句釜涓や緥瀛愶紝澶у閮界煡閬撴墤鍏嬬墝錛屾垜浠瘡嬈¢兘闇瑕佸湪鎽哥墝涔嬪墠鎶婄墝媧楁帀錛岀敤鏉ヨ姣忎釜浜烘懜鍒版瘡寮犵墝鐨勬鐜囧敖閲忕浉絳夛紝澧炲姞娓告垙鐨勯殢鏈烘у拰涔愯叮錛涜繕鏈夐煶棰戞挱鏀懼櫒錛屾湁涓浜涗漢涓嶅枩嬈㈤『搴忔挱鏀撅紝鑰屽枩嬈嬌鐢ㄩ殢鏈烘挱鏀?鍏跺疄闅忔満鎾斁鍒嗕負涓ょ,random鍜宻huffle錛屽悗鏂囦細浠嬬粛鍒?錛屾瘮濡俰Pod Shuffle鐨勫崠鐐逛箣涓灝辨槸“浣犳案榪滀笉鐭ラ亾浣犲皢瑕佸惉鍒扮殑涓嬩竴棣栨瓕鏇叉槸浠涔?#8221;銆傝嚦灝戯紝濡傛灉瑕佹ā鎷熸墤鍏嬬墝娓告垙錛屾垨鑰呭仛闊抽鎾斁鍣紝閮借浣跨敤shuffle綆楁硶錛岃屼簩鑰呯殑shuffle綆楁硶鍗存湁涓浜涘尯鍒紝涓涓槸涓嬈℃х殑媧楃墝錛屽彟涓涓垯鏄瘡嬈″彇涓棣栨瓕銆傞偅涔堟庝箞瀹炵幇浠栦滑鍛紵<br><br>鎵戝厠鐗岀殑shuffle綆楁硶錛?br><br>涓嬮潰涓轟簡鏂逛究鍜屽鏄撹鎳傦紝鎴戦兘鐢ㄦ墤鍏嬬墝鏉ヤ綔渚嬪瓙錛氭涓婃湁n寮犵墝錛屽茍涓斿妗屽瓙涓婄殑鐗岃繘琛屾爣鍙鳳紝浠?鐩村埌n-1銆傛垜浠殑鐩殑鏄礂榪欎簺鐗屻?br><br>涓涓瘮杈冨鏄撴兂鍒扮殑鏂規(guī)硶鏄紝妗屽瓙涓婃湁n寮犳墤鍏嬬墝錛屾垜絎琲嬈′粠妗屽瓙涓婄瓑姒傜巼闅忔満鍙栦竴寮犳墤鍏嬬墝錛屼綔涓烘礂鐗屽悗鐗屽爢鐨勭i寮犳墤鍏嬬墝錛岄偅涔堣繖涓畻娉曞疄鐜拌搗鏉ュ簲璇ユ槸榪欐牱鐨勶細<br><br>浼唬鐮侊細<br>for i <- 0 to n - 1<br>do d <- Random mod (n - i)<br>   shuffle[i] <- deck[d]<br>   deck[d] <- deck[n - i]<br><br>鍏朵腑錛宒eck鏄礂鐗屽墠鐨勫簭鍒?0~n-1)錛宻huffle鏄礂鐗屽悗鐨勫簭鍒?0~n-1)錛岀i嬈?浠?寮濮嬫暟)鍦ㄥ墿涓嬬殑n-i寮犵墝閲岀瓑姒傜巼鐨勫彇涓寮犵墝錛屾妸瀹冩斁鍒皊huffle閲屻傝宒eck[d] = deck[n - i]榪欏彞杈懼埌鐨勬晥鏋滄槸鍒犻櫎鍙栬繃鐨勭墝銆?br><br>榪欎釜鏂規(guī)硶鐨勬椂闂村鏉傚害鏄疧(n)錛屽凡緇忓彲浠ユ帴鍙椾簡錛屼絾榪欎釜鏂規(guī)硶榪樹笉澶熷ソ錛屽洜涓烘垜浠渶瑕佷袱涓暱搴︿負n鏁扮粍銆傚叾瀹炲彲浠ュ緢瀹規(guī)槗寰楀緱鍒頒笅闈㈢殑鏂規(guī)硶錛岃В鍐崇┖闂寸殑闂錛?br>浼唬鐮侊細<br>for i <- 0 to n - 1<br>do d <- Random mod (n - i)<br>   swap(deck[d], deck[n - i])<br><br>榪欐牱錛岃繖涓畻娉曠殑閬撶悊灝辨湁浜涘儚閫夋嫨鎺掑簭浜嗭紝絎琲嬈?浠?寮濮嬫暟)紜畾絎琻-i涓厓绱犵殑鍘熶綅緗紝騫朵笖浜ゆ崲涓や釜浣嶇疆涓婄殑鍏冪礌銆傚畠鐨勫鏉傝浠嶇劧鏄疧(n)錛岃屽彧闇瑕?涓澶栫殑絀洪棿鏉ュ偍瀛樹氦鎹㈢敤鐨勪復(fù)鏃跺彉閲忋?br>榪欎釜鏂規(guī)硶宸茬粡鏄竴涓瘮杈冨ソ鐨勮В鍐蟲柟娉曚簡(鑷繁璁や負)錛屽鏋滀綘榪樿兘鍐欏嚭鏇村ソ鐨剆huffle綆楁硶錛岃鍛婅瘔鎴戙?br><br>鎴戠浉淇″媧楃墝榪欑涓滆タ鏈変簡瑙g殑浜洪兘涓嶄細鐢ㄨ繖鏍風(fēng)殑鏂規(guī)硶鏉ユ礂鐗岋細鍙﹀瀵規(guī)瘡寮犵墝鍋氫竴涓爣璁幫紝鍗蟲槸鍚︽娊榪囪繖寮犵墝錛氱劧鍚庣i嬈″湪n寮犵墝閲岄殢鏈烘娊涓涓紝濡傛灉榪欏紶鐗屾浘緇忚鎶借繃錛岄偅涔堟妸瀹冩斁鍥炲幓錛岄噸澶嶆娊鍙栵紝鐩村埌鎶藉埌涓寮犳病琚娊榪囩殑鐗岋紝灝嗚繖寮犵墝鏍囪涓烘娊鍙栬繃鐨勭墝錛岀劧鍚庡湪綰鎬笂鐨勭i涓湴鏂硅涓嬭繖寮犵墝銆傚湪璁$畻鏈洪噷榪欐牱瀹炵幇錛?br><br>浼唬鐮侊細<br>for i <- 0 to n - 1<br>do d <- Random mod n<br>   while did[d] = 1<br>   do d = Random mod n<br>   did[d] <- 1<br>   shuffle[i] <- deck[d]<br><br><br>鐪嬩簡鎻忚堪錛屼綘涓瀹氬氨浼氳寰楄繖縐嶆柟娉曞疄鍦ㄦ槸閬忎簡錛屼笉浠呴夯鐑︼紝鑰屼笖浼氭湁涓涓櫡闃憋紝閭e氨鏄湪鏌愭鍙栫墝鐨勬椂鍊欙紝涔熻浼氳繍姘斿樊姘歌繙涔熷彇涓嶅埌娌℃湁琚彇榪囩殑閭e紶鐗岋紝瀵艱嚧紼嬪簭榪愯鐨勪笉紜畾鎬с傜劧鑰岋紝鍦ㄥ垵瀛﹁呭綋涓紝鍗存湁涓嶅皯鏄敤榪欑鏂規(guī)硶瀹炵幇鐨剆huffle鐨勩備釜浜鴻涓猴紝鍦ㄨ璁$畻娉曠殑鏃跺欙紝瓚婄畝鍗曘佽秺鎺ヨ繎鐢熸椿鐨勬ā鍨嬶紝灝辮秺瀹規(guī)槗璁捐鍑哄ソ鐨勭畻娉曪紝鑰屼笖綆楁硶鐨勬弿榪頒篃鏇存帴榪戝疄闄呯敓媧匯傚洜姝わ紝璁捐綆楁硶鐨勬椂鍊欙紝濡傛灉鑳藉線騫蟲椂鐢熸椿鐨勬柟闈㈡兂錛?鎬繪槸浜嬪崐鍔熷嶇殑銆?br><br>闄勪笂鎴戣嚜宸卞疄鐜扮殑涓涓被qsort鐨剆huffle綆楁硶<br><br>// element_Size is the size of each element <br> <br>void swap(void const *element1, void const *element2, size_t element_Size) <br>{ <br>    char *temp = new char, <br>         *elem1, *elem2; <br>    elem1 = (char *)element1; <br>    elem2 = (char *)element2; <br>    for(int i = 0; i < element_Size; i++, elem1++, elem2++){ <br>        *temp = *elem1; <br>        *elem1 = *elem2; <br>        *elem2 = *temp; <br>    } <br>    delete temp; <br>} <br> <br>// array_Size is the size of array, <br>// element_Size is the size of each element in array <br> <br>void shuffle(void const *array, size_t array_Size, size_t element_Size) <br>{ <br>    void *element1, *element2; <br>    srand(time(0)); <br>    for(int i = 0; i < array_Size / element_Size; i++){ <br>        element1 = (char *)array + i * element_Size; <br>        element2 = (char *)array + rand(i * element_Size, <br>            array_Size - element_Size, element_Size); <br>        swap(element1, element2, element_Size); <br>    } <br>}</p> <p> </p> <p>鎾斁鍣ㄧ殑shuffle綆楁硶錛?</p> <p>鍓嶉潰璇磋繃鎾斁鍣ㄧ殑闅忔満鎾斁鏈変袱縐嶏紝涓縐嶅彨Random,涓縐嶅彨Shuffle(鎴戣嚜宸辯悊瑙g殑......)錛屼笅闈㈣В閲婅繖涓ょ鏂規(guī)硶鐨勪笉鍚屻?/p> <p>瀛﹁繃姒傜巼鐨勪漢閮借鐭ラ亾鏈夋斁鍥炵殑鎶藉彇鐨勬蹇點傝涓湁n涓笉鍚岀殑灝忕悆錛屾瘡嬈℃娊鍙栦竴涓皬鐞冿紝鐒跺悗鏀懼洖錛屾瘡涓嬈″彇鐨勬椂鍊欐鐜囬兘鏄浉鍚岀殑銆傝繖姝f槸鎾斁鍣╮andom綆楁硶鐨勫師鐞嗭紝榪欑綆楁硶瀹炵幇璧鋒潵寰堢畝鍗曪紝涓棣栨瓕緇撴潫浠ュ悗錛屽彧闇瑕侀殢鏈洪夊彇涓嬩竴棣栨瓕灝辮浜嗐?br>浣嗘槸榪欐牱鍋氭湁涓浜涚己鐐癸細1錛屾湁涓瀹氱殑姒傜巼浣垮緱榪炵畫閫夊彇鐨勪袱棣栨瓕鏄悓涓棣栨瓕錛屾垜鐩鎬俊騫朵笉鏄墍鏈変漢閮藉笇鏈涘湪shuffle妯″紡涓嬭繛緇惉鍚屼竴棣栨瓕鍚э紝褰撶劧涔熸湁瑙e喅鍔炴硶錛岄偅灝辨槸澧炲姞灞傚驚鐜垽鏂紝濡傛灉閫変笂鍚屼竴棣栨瓕錛屽垯閲嶆柊閫夛紝鑰岃繖鏍峰張浼氶噸韞堥偅涓緢鐑傜殑媧楃墝綆楁硶鐨勮杈欍?錛屽綋鍚畬涓棣栨瓕鐨勬椂鍊欙紝瑙夊緱榪樻兂鍐嶅惉涓閬嶏紝鎬庝箞鍔烇紵鎸変笅“涓婁竴棣?#8221;錛屼綘浼氬彂鐜拌繖鏃跺惉鍒扮殑姝屾洸宸茬粡涓嶆槸鍒氭墠閭d竴棣栨兂鍚瓕鏇蹭簡錛屽洜涓鴻繖縐嶆柟娉曞彧鐭ラ亾褰撳墠鐨勭姸鎬侊紝鑰屼笉鐭ラ亾榪囧幓鐨勬挱鏀劇姸鎬併傛庝箞鍔烇紵涓縐嶅姙娉曟槸澧炲姞涓涓槦鍒楀彨鍋?#8220;鍒氭墠鎾斁鍒楄〃”錛屾妸鎾斁榪囩殑姝屾洸鎸夌収欏哄簭鍌ㄥ瓨鍦ㄥ垪琛ㄩ噷銆?錛屾湁涓瀹氭鐜囧湪寰堥暱鐨勪竴孌墊椂闂村唴錛屾挱鏀懼櫒涓嶅仠鐨勫湪閲嶅鎾斁涓ら姝屾洸A鍜孊鎴栬呯被浼兼儏鍐碉紝灝卞儚榪欐牱錛?..-A-B-A-B-A-B-...銆傝繖縐嶆儏鍐典篃鏄緢璁ㄥ帉鐨勶紝鍙槸濡備綍閬垮厤鍛紵鎴戣兘鎯沖埌鐨勫姙娉曟槸澧炲姞鍒ゆ柇錛岀湅榪欓姝屾槸涓嶆槸鍦ㄥ垪琛ㄧ殑鏈鍚庡嚑欏歸噷錛屽鏋滃湪灝變笉閫夎繖棣?.....</p> <p>浣嗘槸榪欎簺姒傜巼閮藉皬鐨勫彲鎬滐紝瀵逛簬涓涓挱鏀懼櫒鐨剅andom鍑芥暟鏉ヨ錛岃兘澶熻冭檻鍒頒互涓婄殑鍑犵偣錛屽凡緇忚兘澶熷仛鍒拌凍澶焤andom鍜屼漢鎬у寲浜嗐傚彧瑕佽兘澶熷悎鐞嗙殑閫夋嫨鍙傛暟錛岃冭檻鍒頒竴浜涚壒孌婃儏鍐?姣斿鏋佸皬鐨勬挱鏀懼垪琛?錛屼互鍙婅冭檻鐢ㄦ埛鐨勫績鐞嗭紝灝辮兘鍋氬嚭涓涓瘮杈冨ソ鐨剅andom鍑芥暟銆?/p> <p>涓嬮潰璁叉垜璁捐鐨勬挱鏀懼櫒shuffle綆楁硶錛宻huffle綆楁硶鑳藉寰堝ぇ紼嬪害涓婇伩鍏峳andom綆楁硶鐨勭己闄鳳紝鍦ㄧ┖闂存椂闂翠笂閮藉緢鑺傜害錛岃屼笖鑳藉杈懼埌姣旇緝鐞嗘兂鐨勯殢鏈哄寲鏁堟灉銆傚畠鐨勫ぇ浣撴濊礬鏄繖鏍風(fēng)殑錛?/p> <p>鎴戜滑浣跨敤涓涓殣鍚殑shuffle鎾斁鍒楄〃(涓涓驚鐜槦鍒?鏉ュ偍瀛樻瓕鏇茬殑欏哄簭錛屽茍鐢ㄤ竴涓寚閽堣〃紺烘鍦ㄦ挱鏀劇殑姝屾洸(璁頒綔"^")錛屾瘮濡傚綋鍓嶇殑鎾斁鍒楄〃鏄繖鏍風(fēng)殑錛?/p> <p><font face="Courier New">ABCDEFGHIJKLMN<br>             ^</font></p> <p>鍗崇幇鍦ㄦ湁14棣栨瓕錛屽皢瑕佹挱鏀句綅緗?鐨勬瓕鏇?姝e湪鎾斁浣嶇疆14鐨勬瓕鏇?錛屾垜浠涓洪槦鍒楀ご鍜屽熬鏄浉榪炵殑錛屽嵆N鍚庨潰鐨勫厓绱犳槸A錛岄偅涔堣繖鏍峰鎴愪簡涓涓驚鐜槦鍒椼?br>鍦ㄦ挱鏀句箣鍓嶏紝鎴戜滑鍦ㄥ墠7(7=14*0.5錛岃繖涓瘮渚嬪彲浠ラ殢渚塊夛紝褰撶劧瓚婂ぇ闅忔満鎬ц秺澶э紝浣嗚兘鍚庨鐨勬鏁拌秺灝?涓綅緗腑錛岄殢鏈哄彇涓涓竴棣栨瓕錛屾妸瀹冨拰灝嗚鎾斁鐨勯偅涓綅緗殑姝屾洸浜ゆ崲銆傚亣璁炬垜浠夌殑鏄疎錛屽垯闃熷垪鍙樻垚榪欐牱錛?/p> <p><font face="Courier New">EBCDAFGHIJKLMN<br>^</font></p> <p>鐒跺悗鎾斁E銆侲鎾斁瀹屼簡浠ュ悗(鎴栬呴夋嫨涓嬩竴棣栨椂)錛岄噸澶嶅垰鎵嶇殑鍔ㄤ綔錛屽嵆鍦˙CDAFGH涓殢鏈洪変竴涓紝浜ゆ崲錛屾瘮濡傞夊埌H錛屽垯闃熷垪鍙樻垚錛?br><font face="Courier New">EHCDAFGBIJKLMN<br> ^</font></p> <p>鐒跺悗鎾斁H銆傝繖鏍鳳紝涓涓猻huffle綆楁硶鍒濇瀹屾垚浜嗐?/p> <p>姣斿鏌愪竴鏃跺埢鎾斁鍣ㄧ殑鐘舵佹槸榪欐牱錛?br><font face="Courier New">EHCDAFGBIJKLMN<br>          ^</font><br>鍒欐垜浠湪LMNEHCD涓夋嫨涓涓紝姣斿閫夋嫨鍒癏錛岄偅涔堜氦鎹㈠茍鎾斁錛屾垚涓猴細<br><font face="Courier New">ELCDAFGBIJKHMN<br>           ^</font><br>浣嗘槸濡傛灉鐢ㄦ埛閫夋嫨涓婁竴棣栨庝箞鍔炲憿?鎴戜滑鍙互鍐嶈褰曚竴涓寚閽堟寚鍚戞渶鏂皊huffle閫夋嫨鍑烘潵鐨勯偅棣栨瓕鏇?璁頒綔"*")錛屾病鏈夐夋嫨榪囧墠涓棣栫殑鏃跺欙紝瀹冧笌鎾斁鎸囬拡鎸囧悜鍚屼竴涓綅緗傚綋閫夋嫨鍓嶄竴棣栫殑鏃跺欙紝浠呯Щ鍔ㄦ寚閽坁錛岃屼笉縐誨姩*錛屾瘮濡備笂涓涓緥瀛愭挱鏀劇殑鏃跺欐寜涓嬪墠涓棣栦互鍚庯紝鎴愪負錛?/p> <p><font face="Courier New">ELCDAFGBIJKHMN<br>          ^*</font></p> <p>榪欐椂鍊欐挱鏀劇殑K姝eソ鏄垰鎵嶆挱鏀劇殑閭d竴棣栵紝褰撶劧榪欒揪鍒頒簡鎴戠殑鐩殑錛屽嵆鍙互閫夊埌鍒氭墠鎾斁鐨勬洸鐩紝褰撶劧濡傛灉鍐嶄竴嬈¢夋嫨涓婁竴棣栵紝灝變細鍙樻垚錛?/p> <p><font face="Courier New">ELCDAFGBIJKHMN<br>         ^ *</font></p> <p>榪欐椂鍊欏鏋滄寜涓嬩竴棣栵紝搴旇鍒ゆ柇^鎸囧悜鐨勬槸涓嶆槸鍜?鎸囧悜鐨勭浉鍚岋紝濡傛灉鐩稿悓錛屽氨鎸夌収鏈鏃╀粙緇嶇殑shuffle綆楁硶榪涜闅忔満閫夊彇錛屼笉鐩稿悓灝辯畝鍗曠殑縐誨姩^錛屽嵆鎴愪負錛?/p> <p><font face="Courier New">ELCDAFGBIJKHMN<br>          ^*</font></p> <p>浼唬鐮侊細<br><font face="Courier New">function keypress(key)<br>   if key = NEXT<br>      if p1 = p2<br>      do p1 <- p1 + 1<br>         p2 <- p2 + 1<br>         k = Random mod (length / 2)<br>         swap(p1, (p1 + k) mod length)<br>         play(p2)<br>      else<br>      do p2 <- (p2 + 1) mod length<br>         play(p2)<br>   if key = PREV<br>      do p2 <- (p2 + length - 1) mod length<br>         play(p2)</font></p> <p>榪欎釜鎾斁鍣ㄧ殑shuffle綆楁硶姣旇緝綆鍗曞疄鐢紝鑰屼笖鑺傜害鍐呭瓨寮閿(榪欏mp3 walkman涔嬬被鐨勪笢瑗挎槸鍗佸垎閲嶈鐨?錛屽綋鐒朵篃鏈変釜灝忕己鐐癸紝灝辨槸褰揯鍓嶇Щ澶氭鍥炲埌*浠ュ悗錛屽啀鎸変笅涓棣栵紝鍒欎細閲嶆柊寮濮媠huffle錛屼絾鏄瓕鏇叉暟鐩緢澶氱殑鎯呭喌涓嬶紝榪欎釜緙虹偣騫朵笉鏄偅涔堥噸瑕併?br>榪欎釜綆楁硶鍦ㄥ垰寮濮嬪惉鐨勬椂鍊欙紝騫朵笉鏄緢闅忔満錛屽彲鏄殢鐫鍚殑嬈℃暟鐨勫澶氾紝闃熷垪浼氳秺鏉ヨ秺涔憋紝杈懼埌涓涓猻huffle鐨勬晥鏋溿?br>褰撶劧錛屼篃鍙互鍦ㄧ涓嬈″榪欎釜鍒楄〃鎾斁涔嬪墠錛屼嬌鐢ㄦ墤鍏嬬墝鐨剆huffle綆楁硶(瑙佹湰鏂囩涓閮ㄥ垎)榪涜涓嬈huffle錛岃繖鏍鳳紝鍒氬紑濮嬫挱鏀劇殑鏃跺欏垪琛ㄥ氨鏄殢鏈虹殑銆?br>閫氳繃鍘熺悊鎴戜滑鍙互鐪嬪埌錛屽浜庡垰鍚繃鐨勯偅棣栨瓕鏉ヨ錛屼笉緇忚繃length / 2嬈★紝鏄笉浼氬啀涓嬈″惉鍒扮殑錛屽洜姝ゅ緢澶х▼搴︿笂閬垮厤浜唕andom綆楁硶鐨勭己闄楓傝繖涓猯ength / 2鐨勫弬鏁板彲浠ユ寜鐓у叿浣撴儏鍐甸夋嫨錛屽彲浠ユ槸甯告暟錛屼篃鍙互鏄殢鏈烘暟錛屼篃鍙互鏄拰闀垮害鏈夊叧鐨勪竴涓暟銆?nbsp;</p> <img src ="http://m.shnenglu.com/AutomateProgram/aggbug/129458.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/AutomateProgram/" target="_blank">婕傛紓</a> 2010-10-11 17:25 <a href="http://m.shnenglu.com/AutomateProgram/archive/2010/10/11/129458.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍗忓悓鎺ㄨ崘綆楁硶瀹炶返涔婼lope One鐨勪粙緇嶏紙杞級http://m.shnenglu.com/AutomateProgram/archive/2010/07/19/120790.html婕傛紓婕傛紓Mon, 19 Jul 2010 09:49:00 GMThttp://m.shnenglu.com/AutomateProgram/archive/2010/07/19/120790.htmlhttp://m.shnenglu.com/AutomateProgram/comments/120790.htmlhttp://m.shnenglu.com/AutomateProgram/archive/2010/07/19/120790.html#Feedback0http://m.shnenglu.com/AutomateProgram/comments/commentRss/120790.htmlhttp://m.shnenglu.com/AutomateProgram/services/trackbacks/120790.html闃呰鍏ㄦ枃

婕傛紓 2010-07-19 17:49 鍙戣〃璇勮
]]>
鍌呴噷鍙跺彉鎹㈠拰鎷夋櫘鎷夋柉鍙樻崲鐨勬剰涔?/title><link>http://m.shnenglu.com/AutomateProgram/archive/2010/06/13/117804.html</link><dc:creator>婕傛紓</dc:creator><author>婕傛紓</author><pubDate>Sun, 13 Jun 2010 10:19:00 GMT</pubDate><guid>http://m.shnenglu.com/AutomateProgram/archive/2010/06/13/117804.html</guid><wfw:comment>http://m.shnenglu.com/AutomateProgram/comments/117804.html</wfw:comment><comments>http://m.shnenglu.com/AutomateProgram/archive/2010/06/13/117804.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/AutomateProgram/comments/commentRss/117804.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/AutomateProgram/services/trackbacks/117804.html</trackback:ping><description><![CDATA[鍘熸枃鍦板潃錛?a >http://hi.baidu.com/zavierwong/blog/item/1af5c3d0cd34a4da572c849e.html</a><br><br>緇忓父鏈変漢闂垜錛屽倕閲屽彾鍙樻崲鍜屾媺鏅媺鏂彉鎹㈢殑鎰忎箟銆傚湪榪欓噷鎴戝氨鑷繁鐨勪竴浜涜瑙o紝浠ュ強緇撳悎鍒漢鐨勮鐐規(guī)弿榪板涓嬶紝甯屾湜澶у瀵規(guī)鏈夋墍浜嗚В銆?br>     鍌呴噷鍙跺彉鎹紙Transformée de Fourier錛夊湪鐗╃悊瀛︺佹暟璁恒佺粍鍚堟暟瀛︺佷俊鍙峰鐞嗐佹鐜囪銆佺粺璁″銆佸瘑鐮佸銆佸0瀛︺佸厜瀛︺佹搗媧嬪銆佺粨鏋勫姩鍔涘絳夐鍩熼兘鏈夌潃騫挎硾鐨勫簲鐢紙渚嬪鍦ㄤ俊鍙峰鐞嗕腑錛屽倕閲屽彾鍙樻崲鐨勫吀鍨嬬敤閫旀槸灝嗕俊鍙峰垎瑙f垚騫呭煎垎閲忓拰棰戠巼鍒嗛噺錛夈?br>     鍌呴噷鍙跺彉鎹㈣兘灝嗘弧瓚充竴瀹氭潯浠剁殑鏌愪釜鍑芥暟琛ㄧず鎴愪笁瑙掑嚱鏁幫紙姝e雞鍜?鎴栦綑寮﹀嚱鏁幫級鎴栬呭畠浠殑縐垎鐨勭嚎鎬х粍鍚堛傚湪涓嶅悓鐨勭爺絀墮鍩燂紝鍌呴噷鍙跺彉鎹㈠叿鏈夊縐嶄笉鍚岀殑鍙樹綋褰㈠紡錛屽榪炵畫鍌呴噷鍙跺彉鎹㈠拰紱繪暎鍌呴噷鍙跺彉鎹€?br>      鍌呴噷鍙跺彉鎹㈡槸涓縐嶈В鍐抽棶棰樼殑鏂規(guī)硶錛屼竴縐嶅伐鍏鳳紝涓縐嶇湅寰呴棶棰樼殑瑙掑害銆傜悊瑙g殑鍏抽敭鏄細涓涓繛緇殑淇″彿鍙互鐪嬩綔鏄竴涓釜灝忎俊鍙風(fēng)殑鍙犲姞錛屼粠鏃跺煙鍙犲姞涓庝粠棰戝煙鍙犲姞閮藉彲浠ョ粍鎴愬師鏉ョ殑淇″彿錛屽皢淇″彿榪欎箞鍒嗚В鍚庢湁鍔╀簬澶勭悊銆?br>銆銆鎴戜滑鍘熸潵瀵逛竴涓俊鍙峰叾瀹炴槸浠庢椂闂寸殑瑙掑害鍘葷悊瑙g殑錛屼笉鐭ヤ笉瑙変腑錛屽叾瀹炴槸鎸夌収鏃墮棿鎶婁俊鍙瘋繘琛屽垎鍓詫紝姣忎竴閮ㄥ垎鍙槸涓涓椂闂寸偣瀵瑰簲涓涓俊鍙峰鹼紝涓涓俊鍙鋒槸涓緇勮繖鏍風(fēng)殑鍒嗛噺鐨勫彔鍔犮傚倕閲屽彾鍙樻崲鍚庯紝鍏跺疄榪樻槸涓彔鍔犻棶棰橈紝鍙笉榪囨槸浠庨鐜囩殑瑙掑害鍘誨彔鍔狅紝鍙笉榪囨瘡涓皬淇″彿鏄竴涓椂闂村煙涓婅鐩栨暣涓尯闂寸殑淇″彿錛屼絾浠栫‘鏈夊浐瀹氱殑鍛ㄦ湡錛屾垨鑰呰錛岀粰浜嗕竴涓懆鏈燂紝鎴戜滑灝辮兘鐢誨嚭涓涓暣涓尯闂翠笂鐨勫垎淇″彿錛岄偅涔堢粰瀹氫竴緇勫懆鏈熷鹼紙鎴栭鐜囧鹼級錛屾垜浠氨鍙互鐢誨嚭鍏跺搴旂殑鏇茬嚎錛屽氨鍍忕粰鍑烘椂鍩熶笂姣忎竴鐐圭殑淇″彿鍊間竴鏍鳳紝涓嶈繃濡傛灉淇″彿鏄懆鏈熺殑璇?錛岄鍩熺殑鏇寸畝鍗曪紝鍙渶瑕佸嚑涓敋鑷充竴涓氨鍙互浜嗭紝鏃跺煙鍒欓渶瑕佹暣涓椂闂磋醬涓婃瘡涓鐐歸兘鏄犲皠鍑轟竴涓嚱鏁板箋?br>銆銆鍌呴噷鍙跺彉鎹㈠氨鏄皢涓涓俊鍙風(fēng)殑鏃跺煙琛ㄧず褰㈠紡鏄犲皠鍒頒竴涓鍩熻〃紺哄艦寮忥紱閫嗗倕閲屽彾鍙樻崲鎭板ソ鐩稿弽銆傝繖閮芥槸涓涓俊鍙風(fēng)殑涓嶅悓琛ㄧず褰㈠紡銆傚畠鐨勫叕寮忎細鐢ㄥ氨鍙互錛屽綋鐒舵妸璇佹槑鐪嬫噦浜嗘洿濂姐?br>銆銆瀵逛竴涓俊鍙峰仛鍌呯珛鍙跺彉鎹紝鍙互寰楀埌鍏墮鍩熺壒鎬э紝鍖呮嫭騫呭害鍜岀浉浣嶄袱涓柟闈€傚箙搴︽槸琛ㄧず榪欎釜棰戠巼鍒嗛噺鐨勫ぇ灝忥紝閭d箞鐩鎬綅鍛紝瀹冩湁浠涔堢墿鐞嗘剰涔夛紵棰戝煙鐨勭浉浣嶄笌鏃跺煙鐨勭浉浣嶆湁鍏崇郴鍚楋紵淇″彿鍓嶄竴孌電殑鐩鎬綅錛堥鍩燂級涓庡悗涓孌電殑鐩鎬綅鐨勫彉鍖栨槸鍚︿笌淇″彿鐨勯鐜囨垚姝f瘮鍏崇郴銆?br>銆銆鍌呯珛鍙跺彉鎹㈠氨鏄妸涓涓俊鍙鳳紝鍒嗚В鎴愭棤鏁扮殑姝e雞娉紙鎴栬呬綑寮︽嘗錛変俊鍙楓備篃灝辨槸璇達紝鐢ㄦ棤鏁扮殑姝e雞娉紝鍙互鍚堟垚浠諱綍浣犳墍闇瑕佺殑淇″彿銆?br>銆銆鎯充竴鎯寵繖涓棶棰橈細緇欎綘寰堝姝e雞淇″彿錛屼綘鎬庢牱鎵嶈兘鍚堟垚浣犻渶瑕佺殑淇″彿鍛紵絳旀鏄涓や釜鏉′歡錛屼竴涓槸姣忎釜姝e雞娉㈢殑騫呭害錛屽彟涓涓氨鏄瘡涓寮︽嘗涔嬮棿鐨勭浉浣嶅樊銆傛墍浠ョ幇鍦ㄥ簲璇ユ槑鐧戒簡鍚э紝棰戝煙涓婄殑鐩鎬綅錛屽氨鏄瘡涓寮︽嘗涔嬮棿鐨勭浉浣嶃傘銆<br>銆銆鍌呯珛鍙跺彉鎹㈢敤浜庝俊鍙風(fēng)殑棰戠巼鍩熷垎鏋愶紝涓鑸垜浠妸鐢?shù)淇″忎h弿榪版垚鏃墮棿鍩熺殑鏁板妯″瀷錛岃屾暟瀛椾俊鍙峰鐞嗗淇″彿鐨勯鐜囩壒鎬ф洿鎰熷叴瓚o紝鑰岄氳繃鍌呯珛鍙跺彉鎹㈠緢瀹規(guī)槗寰楀埌淇″彿鐨勯鐜囧煙鐗規(guī)с<br>銆銆鍌呴噷鍙跺彉鎹㈢畝鍗曢氫織鐞嗚В灝辨槸鎶婄湅浼兼潅涔辨棤绔犵殑淇″彿鑰冭檻鎴愮敱涓瀹氭尟騫呫佺浉浣嶃侀鐜囩殑鍩烘湰姝e雞錛堜綑寮︼級淇″彿緇勫悎鑰屾垚錛屽倕閲屽彾鍙樻崲鐨勭洰鐨勫氨鏄壘鍑鴻繖浜涘熀鏈寮︼紙浣欏雞錛変俊鍙蜂腑鎸箙杈冨ぇ錛堣兘閲忚緝楂橈級淇″彿瀵瑰簲鐨勯鐜囷紝浠庤屾壘鍑烘潅涔辨棤绔犵殑淇″彿涓殑涓昏鎸姩棰戠巼鐗圭偣銆傚鍑忛熸満鏁呴殰鏃訛紝閫氳繃鍌呴噷鍙跺彉鎹㈠仛棰戣氨鍒嗘瀽錛屾牴鎹悇綰ч嬌杞漿閫熴侀嬌鏁頒笌鏉傞煶棰戣氨涓尟騫呭ぇ鐨勫姣旓紝鍙互蹇熷垽鏂摢綰ч嬌杞崯浼ゃ? <p><br>鎷夋櫘鎷夋柉鍙樻崲錛圠aplace Transform)錛屾槸宸ョ▼鏁板涓父鐢ㄧ殑涓縐嶇Н鍒嗗彉鎹€?br>    瀹冩槸涓虹畝鍖栬綆楄屽緩绔嬬殑瀹炲彉閲忓嚱鏁板拰澶嶅彉閲忓嚱鏁伴棿鐨勪竴縐嶅嚱鏁板彉鎹€傚涓涓疄鍙橀噺鍑芥暟浣滄媺鏅媺鏂彉鎹紝騫跺湪澶嶆暟鍩熶腑浣滃悇縐嶈繍綆楋紝鍐嶅皢榪愮畻緇撴灉浣滄媺鏅媺鏂弽鍙樻崲鏉ユ眰寰楀疄鏁板煙涓殑鐩稿簲緇撴灉錛屽線寰姣旂洿鎺ュ湪瀹炴暟鍩熶腑姹傚嚭鍚屾牱鐨勭粨鏋滃湪璁$畻涓婂鏄撳緱澶氥傛媺鏅媺鏂彉鎹㈢殑榪欑榪愮畻姝ラ瀵逛簬姹傝В綰挎у井鍒嗘柟紼嬪挨涓烘湁鏁堬紝瀹冨彲鎶婂井鍒嗘柟紼嬪寲涓哄鏄撴眰瑙g殑浠f暟鏂圭▼鏉ュ鐞嗭紝浠庤屼嬌璁$畻綆鍖栥傚湪緇忓吀鎺у埗鐞嗚涓紝瀵規(guī)帶鍒剁郴緇熺殑鍒嗘瀽鍜岀患鍚堬紝閮芥槸寤虹珛鍦ㄦ媺鏅媺鏂彉鎹㈢殑鍩虹涓婄殑銆?br>    寮曞叆鎷夋櫘鎷夋柉鍙樻崲鐨勪竴涓富瑕佷紭鐐癸紝鏄彲閲囩敤浼犻掑嚱鏁頒唬鏇垮井鍒嗘柟紼嬫潵鎻忚堪緋葷粺鐨勭壒鎬с傝繖灝變負閲囩敤鐩磋鍜岀畝渚跨殑鍥捐В鏂規(guī)硶鏉ョ‘瀹氭帶鍒剁郴緇熺殑鏁翠釜鐗規(guī)э紙瑙佷俊鍙鋒祦紼嬪浘銆佸姩鎬佺粨鏋勫浘錛夈佸垎鏋愭帶鍒剁郴緇熺殑榪愬姩榪囩▼錛堣濂堝鏂壒紼沖畾鍒ゆ嵁銆佹牴杞ㄨ抗娉曪級錛屼互鍙婄患鍚堟帶鍒剁郴緇熺殑鏍℃瑁呯疆錛堣鎺у埗緋葷粺鏍℃鏂規(guī)硶錛夋彁渚涗簡鍙兘鎬с?br>    鎷夋櫘鎷夋柉鍙樻崲鍦ㄥ伐紼嬪涓婄殑搴旂敤錛氬簲鐢ㄦ媺鏅媺鏂彉鎹㈣В甯稿彉閲忛綈嬈″井鍒嗘柟紼嬶紝鍙互灝嗗井鍒嗘柟紼嬪寲涓轟唬鏁版柟紼嬶紝浣塊棶棰樺緱浠ヨВ鍐熾傚湪宸ョ▼瀛︿笂錛屾媺鏅媺鏂彉鎹㈢殑閲嶅ぇ鎰忎箟鍦ㄤ簬錛氬皢涓涓俊鍙蜂粠鏃跺煙涓婏紝杞崲涓哄棰戝煙錛坰鍩燂級涓婃潵琛ㄧず錛涘湪綰挎х郴緇燂紝鎺у埗鑷姩鍖栦笂閮芥湁騫挎硾鐨勫簲鐢ㄣ?/p> <img src ="http://m.shnenglu.com/AutomateProgram/aggbug/117804.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/AutomateProgram/" target="_blank">婕傛紓</a> 2010-06-13 18:19 <a href="http://m.shnenglu.com/AutomateProgram/archive/2010/06/13/117804.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>A*瀵昏礬鍒濇帰(杞?http://m.shnenglu.com/AutomateProgram/archive/2008/12/01/68297.html婕傛紓婕傛紓Mon, 01 Dec 2008 08:39:00 GMThttp://m.shnenglu.com/AutomateProgram/archive/2008/12/01/68297.htmlhttp://m.shnenglu.com/AutomateProgram/comments/68297.htmlhttp://m.shnenglu.com/AutomateProgram/archive/2008/12/01/68297.html#Feedback0http://m.shnenglu.com/AutomateProgram/comments/commentRss/68297.htmlhttp://m.shnenglu.com/AutomateProgram/services/trackbacks/68297.html闃呰鍏ㄦ枃

婕傛紓 2008-12-01 16:39 鍙戣〃璇勮
]]>
綰㈤粦鏍戯紙Red-Black Tree錛?杞?http://m.shnenglu.com/AutomateProgram/archive/2008/11/22/67581.html婕傛紓婕傛紓Sat, 22 Nov 2008 06:16:00 GMThttp://m.shnenglu.com/AutomateProgram/archive/2008/11/22/67581.htmlhttp://m.shnenglu.com/AutomateProgram/comments/67581.htmlhttp://m.shnenglu.com/AutomateProgram/archive/2008/11/22/67581.html#Feedback0http://m.shnenglu.com/AutomateProgram/comments/commentRss/67581.htmlhttp://m.shnenglu.com/AutomateProgram/services/trackbacks/67581.htmlhttp://imlazy.ycool.com/post.1104022.html

錛堥槄璇繪湰鏂囦箣鍓嶈鍏堜簡瑙d簩鍙夋悳绱㈡爲錛?span lang=EN-US>

綰㈤粦鏍戯紙Red-Black Tree錛?span lang=EN-US>

綰㈤粦鏍戯紙Red-Black Tree錛夋槸浜屽弶鎼滅儲鏍戯紙Binary Search Tree錛夌殑涓縐嶆敼榪涖傛垜浠煡閬撲簩鍙夋悳绱㈡爲鍦ㄦ渶鍧忕殑鎯呭喌涓嬪彲鑳戒細鍙樻垚涓涓摼琛?/span>錛堝綋鎵鏈夎妭鐐規(guī)寜浠庡皬鍒板ぇ鐨勯『搴忎緷嬈℃彃鍏ュ悗錛夈傝岀孩榛戞爲鍦ㄦ瘡涓嬈℃彃鍏ユ垨鍒犻櫎鑺傜偣涔嬪悗閮戒細鑺?span lang=EN-US>O錛?span lang=EN-US>log N錛夌殑鏃墮棿鏉ュ鏍戠殑緇撴瀯浣滀慨鏀癸紝浠?span style="COLOR: red">淇濇寔鏍戠殑騫寵 銆備篃灝辨槸璇達紝綰㈤粦鏍戠殑鏌ユ壘鏂規(guī)硶涓庝簩鍙夋悳绱㈡爲瀹屽叏涓鏍鳳紱鎻掑叆鍜屽垹闄よ妭鐐圭殑鐨勬柟娉曞墠鍗婇儴鍒嗚妭涓庝簩鍙夋悳绱㈡爲瀹屽叏涓鏍鳳紝鑰屽悗鍗婇儴鍒嗘坊鍔犱簡涓浜涗慨鏀規(guī)爲鐨勭粨鏋勭殑鎿嶄綔銆?span lang=EN-US>

綰㈤粦鏍戠殑姣忎釜鑺傜偣涓婄殑灞炴ч櫎浜嗘湁涓涓?span lang=EN-US>key銆?span lang=EN-US>3涓寚閽堬細parent銆?span lang=EN-US>lchild銆?span lang=EN-US>rchild浠ュ錛?span style="COLOR: red">榪樺浜嗕竴涓睘鎬э細color銆?/span>瀹冨彧鑳芥槸涓ょ棰滆壊錛氱孩鎴栭粦銆傝岀孩榛戞爲闄や簡鍏鋒湁浜屽弶鎼滅儲鏍戠殑鎵鏈夋ц川涔嬪錛岃繕鍏鋒湁浠ヤ笅4鐐規(guī)ц川錛?span style="COLOR: red">錛堜負浠涔堝彧瑕佽繖浜涙ц川灝辮兘瑙e喅榪欎釜闂錛屽叾瀹炶繕鏄竴涓棶棰橈級

1. 鏍硅妭鐐規(guī)槸榛戣壊鐨勩?span lang=EN-US>

2. 絀鴻妭鐐規(guī)槸榛戣壊鐨勶紙綰㈤粦鏍戜腑錛屾牴鑺傜偣鐨?span lang=EN-US>parent浠ュ強鎵鏈夊彾鑺傜偣lchild銆?span lang=EN-US>rchild閮戒笉鎸囧悜NULL錛岃屾槸鎸囧悜涓涓畾涔夊ソ鐨勭┖鑺傜偣錛夈?span lang=EN-US>

3. 綰㈣壊鑺傜偣鐨勭埗銆佸乏瀛愩佸彸瀛愯妭鐐歸兘鏄粦鑹層?span lang=EN-US>

4. 鍦ㄤ換浣曚竴媯靛瓙鏍戜腑錛屾瘡涓鏉′粠鏍硅妭鐐瑰悜涓嬭蛋鍒扮┖鑺傜偣鐨勮礬寰勪笂鍖呭惈鐨勯粦鑹茶妭鐐規(guī)暟閲忛兘鐩稿悓銆?span lang=EN-US>
   
濡備笅鍥懼氨鏄竴媯電孩榛戞爲錛?span lang=EN-US>

鏈変簡榪欏嚑鏉¤鍒欙紝灝卞彲浠ヤ繚璇佹暣媯墊爲鐨勫鉤琛★紝涔熷氨絳変簬淇濊瘉浜嗘悳绱㈢殑鏃墮棿涓?span lang=EN-US>O錛?span lang=EN-US>log N錛夈?span lang=EN-US>

浣嗘槸鍦ㄦ彃鍏ャ佸垹闄よ妭鐐瑰悗錛屽氨鏈夊彲鑳界牬鍧忎簡綰㈤粦鏍戠殑鎬ц川銆傛墍浠ユ垜浠鍋氫竴浜涙搷浣滄潵鎶婃暣媯墊爲淇ˉ濂姐備笅闈㈡垜灝辨潵浠嬬粛涓涓嬨?span lang=EN-US>

棣栧厛鏈変竴涓澶囩煡璇嗭紝閭e氨鏄妭鐐圭殑Left-Rotate鍜?span lang=EN-US>Right-Rotate鎿嶄綔銆傛墍璋?span lang=EN-US>Left-Rotate(x)灝辨槸鎶婅妭鐐?span lang=EN-US>x鍚戝乏涓嬫柟鍚戠Щ鍔ㄤ竴鏍鹼紝鐒跺悗璁?span lang=EN-US>x鍘熸潵鐨勫彸瀛愯妭鐐逛唬鏇垮畠鐨勪綅緗傝?span lang=EN-US>Right-Rotate褰撶劧灝辨槸鎶?span lang=EN-US>Left-Rotate宸︺佸彸浜掑弽涓涓嬨傚涓嬪浘錛?span lang=EN-US>

娉ㄦ剰錛?span lang=EN-US>Left-Rotate(x)鍚庯紝x鐨勫彸瀛愭爲鍙樻垚浜嗗師鏉?span lang=EN-US>y鐨勫乏瀛愭爲錛?span lang=EN-US>Right-Rotate鍙嶄箣銆傛濊冧竴涓嬶紝榪欐牱涓嬈″彉鎹㈠悗錛屼粛鐒?span style="COLOR: red">婊¤凍浜屽弶鎼滅儲鏍戠殑鎬ц川錛?span style="COLOR: red">涓簭閬嶅巻騫舵病鏈夋敼鍙?/span>錛夈傚湪綰㈤粦鏍戠殑鎻掑叆銆佸垹闄や腑錛岃鐢ㄥ埌寰堝Left-Rotate鍜?span lang=EN-US>Right-Rotate鎿嶄綔銆?span lang=EN-US>

//鎶婁竴涓妭鐐瑰悜宸︿笅鏂圭Щ涓鏍鹼紝騫惰浠栧師鏉ョ殑鍙沖瓙鑺傜偣浠f浛瀹冪殑浣嶇疆銆?/span>
   void leftRotate(RBTNode* node)

 {
        RBTNode* right = node->rchild;
        node->rchild = right->lchild;
        node->rcount = right->lcount;
        node->rchild->parent = node;
        right->parent = node->parent;
        if (right->parent == m_null) {
            m_root = right;
        }
        else if (node == node->parent->lchild) {
            node->parent->lchild = right;
        }
        else {
            node->parent->rchild = right;
        }
        right->lchild = node;
        right->lcount += node->lcount + 1;
        node->parent = right;
    }

    //鎶婁竴涓妭鐐瑰悜鍙充笅鏂圭Щ涓鏍鹼紝騫惰浠栧師鏉ョ殑宸﹀瓙鑺傜偣浠f浛瀹冪殑浣嶇疆銆?/span>
    inline void rightRotate(RBTNode* node) {
        RBTNode* left = node->lchild;
        node->lchild = left->rchild;
        node->lcount = left->rcount;
        node->lchild->parent = node;
        left->parent = node->parent;
        if (left->parent == m_null) {
            m_root = left;
        }
        else if (node == node->parent->lchild) {
            node->parent->lchild = left;
        }
        else {
            node->parent->rchild = left;
        }
        left->rchild = node;
        left->rcount += node->rcount + 1;
        node->parent = left;
    }

 

涓銆?鎻掑叆

鎻掑叆棣栧厛鏄寜閮ㄥ氨鐝簩鍙夋悳绱㈡爲鐨勬彃鍏ユ楠わ紝鎶婃柊鑺傜偣z鎻掑叆鍒版煇涓涓彾鑺傜偣鐨勪綅緗笂銆?span lang=EN-US>
   
鎺ヤ笅鏉ユ妸z鐨勯鑹茶鎴?span style="COLOR: red">綰㈣壊銆?span style="COLOR: red">涓轟粈涔堬紵榪樿寰楃孩榛戞爲鐨勬ц川鍚楋紝浠庢牴鑺傜偣鍚戜笅鍒扮┖鑺傜偣鐨勬瘡涓鏉¤礬寰勪笂鐨勯粦鑹茶妭鐐規(guī)暟瑕佺浉鍚屻傚鏋滄柊鎻掑叆鐨勬槸榛戣壊鑺傜偣錛岄偅涔堝畠鎵鍦ㄧ殑璺緞涓婂氨澶?span style="COLOR: red">鍑轟簡涓涓粦鑹茬殑鑺傜偣浜嗐傛墍浠ユ柊鎻掑叆鐨勮妭鐐逛竴瀹氳璁炬垚綰㈣壊銆備絾鏄繖鏍峰彲鑳藉張鏈変竴涓煕鐩撅紝濡傛灉z鐨勭埗鑺傜偣涔熸槸綰㈣壊錛屾庝箞鍔烇紝鍓嶉潰璇磋繃綰㈣壊鑺傜偣鐨勫瓙鑺傜偣蹇呴』鏄粦鑹層傚洜姝ゆ垜浠鎵ц涓嬮潰涓涓凱浠g殑榪囩▼錛岀О涓?span lang=EN-US>Insert-Fixup錛屾潵淇ˉ榪欐5綰㈤粦鏍戙?span lang=EN-US>

鍦?span lang=EN-US>Insert-Fixup涓紝姣忎竴嬈¤凱浠g殑寮濮嬶紝鎸囬拡z涓瀹氶兘鎸囧悜涓涓孩鑹茬殑鑺傜偣銆傚鏋?span lang=EN-US>z->parent鏄粦鑹詫紝閭f垜浠氨澶у姛鍛婃垚浜嗭紱濡傛灉z->parent鏄孩鑹詫紝鏄劇劧榪欏氨榪濊繑浜嗙孩榛戠殑鏍戞ц川錛岄偅涔堟垜浠鎯沖姙娉曟妸z鎴栬?span lang=EN-US>z->parent鍙樻垚榛戣壊錛屼絾榪欒寤虹珛鍦ㄤ笉鐮村潖綰㈤粦鏍戠殑鍏朵粬鎬ц川鐨勫熀紜涓娿?span lang=EN-US>

榪欓噷鍐嶅紩鍏ヤ袱涓寚閽堬細grandfather錛屾寚鍚?span lang=EN-US>z->parent->parent錛屼篃灝辨槸z鐨勭埛鐖?span lang=EN-US>(鏄劇劧鐢變簬z->parent涓虹孩鑹詫紝grandfather涓瀹氭槸榛戣壊)錛?span lang=EN-US>uncle錛屾寚鍚?span lang=EN-US>grandfather闄や簡z->parent涔嬪鐨勫彟涓涓瓙鑺傜偣錛屼篃灝辨槸z鐨勭埗浜茬殑鍏勫紵錛屾墍浠ュ彨uncle銆?span lang=EN-US>

錛堜負浜嗚璇濇柟渚匡紝鎴戜滑榪欓噷閮藉亣璁?span lang=EN-US>z->parent鏄?span lang=EN-US>grandfather鐨勫乏瀛愯妭鐐癸紝鑰?span lang=EN-US>uncle鏄?span lang=EN-US>grandfather鐨勫彸瀛愯妭鐐廣傚鏋滈亣鍒扮殑瀹為檯鎯呭喌涓嶆槸榪欐牱錛岄偅涔熷彧瑕佹妸鎵鏈夋搷浣滀腑鐨勫乏銆佸彸浜掑弽灝卞彲浠ヤ簡銆傦級

鍦ㄦ瘡涓嬈¤凱浠d腑錛屾垜浠彲鑳介亣鍒頒互涓嬩笁縐嶆儏鍐點?span lang=EN-US>

Case 1. uncle涔熸槸綰㈣壊銆傝繖鏃跺彧瑕佹妸z->parent鍜?span lang=EN-US>uncle閮借鎴愰粦鑹詫紝騫舵妸grandfather璁炬垚綰㈣壊銆傝繖鏍蜂粛鐒剁‘淇濅簡姣忎竴鏉¤礬寰勪笂鐨勯粦鑹茶妭鐐規(guī)暟涓嶅彉銆傜劧鍚庢妸z鎸囧悜grandfather錛屽茍寮濮嬫柊涓杞殑榪唬銆傚涓嬪浘錛?span lang=EN-US>

娉?span lang=EN-US>1錛氭垜浠彲浠ョ湅鍑哄乏杈圭殑鍥撅紝鍚勬潯璺緞鍖呭惈榛戦鑹茬殑鏁扮洰鏄紜殑錛屽彧鏄鑹蹭笉瀵硅屽凡錛屾垜浠妸瀹冨垎鎴愪袱杈規(guī)潵鐪嬶紝鍗沖埌鑺傜偣D搴旇鍖呭惈N+1涓粦鑹茶妭鐐癸紝鍏朵腑榪欎釜1鏄?span lang=EN-US>C錛岃?span lang=EN-US>N鏄?span lang=EN-US>C浠ヤ笂鐨勯粦鑹茶妭鐐逛釜鏁般傚悓鐞?span lang=EN-US>A涔熷簲璇ユ槸N+1錛?span lang=EN-US>B涔熸槸N+1錛岃皟鏁翠互鍚庯紝鐪嬬湅鎴戜滑紜疄娌℃湁鏀瑰彉鍒?span lang=EN-US>A銆?span lang=EN-US>B銆?span lang=EN-US>D鐨勬墍鍖呭惈鐨勯粦鑹茶妭鐐規(guī)暟銆備笅闈㈢殑鎯呭喌涔熷彲浠ュ悓鏍風(fēng)殑鏂規(guī)硶鏉ュ垎鏋愩?span lang=EN-US>

Case 2. uncle鏄粦鑹詫紝騫朵笖z鏄?span lang=EN-US>z->parent鐨勫彸瀛愯妭鐐廣傝繖鏃舵垜浠彧瑕佹妸z鎸囧悜z->parent錛岀劧鍚庡仛涓嬈?span lang=EN-US>Left-Rotate(z)銆傚氨鍙互鎶婃儏鍐佃漿鍖栨垚Case 3銆?span lang=EN-US>

Case 3. uncle鏄粦鑹詫紝騫朵笖z鏄?span lang=EN-US>z->parent鐨勫乏瀛愯妭鐐廣傚埌浜嗚繖涓姝ワ紝鎴戜滑灝卞墿鏈鍚庝竴姝ヤ簡銆傚彧瑕佹妸z->parent璁炬垚榛戣壊錛屾妸grandfather璁炬垚綰㈣壊錛屽啀鍋氫竴嬈?span lang=EN-US>Right-Rotate(grandfather)錛屾暣媯墊爲灝變慨琛ュ畬姣曚簡銆傚彲浠ユ濊冧竴涓嬶紝榪欐牱涓嬈℃搷浣滀箣鍚庯紝紜疄婊¤凍浜嗘墍鏈夌孩榛戞爲鐨勬ц川銆?span lang=EN-US>Case 2鍜?span lang=EN-US>Case 3濡備笅鍥撅細

  
鍙嶅榪涜榪唬錛岀洿鍒版煇涓嬈¤凱浠e紑濮嬫椂z->parent涓洪粦鑹茶屽憡緇堬紝涔熷氨鏄綋閬囧埌Case 3鍚庯紝鍋氬畬瀹冭屽憡緇堛?span lang=EN-US>

void insertFixup(RBTNode* insertNode) {
        RBTNode* p = insertNode;
        while (p->parent->color == RED) {

//z->parent鏄?/span>grandfather鐨勫乏瀛愯妭鐐?/span>,涓嬮潰鏄笁縐嶆儏鍐?/span>
            if (p->parent == p->parent->parent->lchild) {
                RBTNode* parentRight = p->parent->parent->rchild;
                if (parentRight->color == RED) {
                    p->parent->color = BLACK;
                    parentRight->color = BLACK;
                    p->parent->parent->color = RED;
                    p = p->parent->parent;
                }
                else {
                    if (p == p->parent->rchild) {
                        p = p->parent;
                        leftRotate(p);
                    }
                    p->parent->color = BLACK;
                    p->parent->parent->color = RED;
                    rightRotate(p->parent->parent);
                }
            }
            else {
                RBTNode* parentLeft = p->parent->parent->lchild;
                if (parentLeft->color == RED) {
                    p->parent->color = BLACK;
                    parentLeft->color = BLACK;
                    p->parent->parent->color = RED;
                    p = p->parent->parent;
                }
                else {
                    if (p == p->parent->lchild) {
                        p = p->parent;
                        rightRotate(p);
                    }
                    p->parent->color = BLACK;
                    p->parent->parent->color = RED;
                    leftRotate(p->parent->parent);
                }
            }
        }
        m_root->color = BLACK;
    }

浜屻佸垹闄?span lang=EN-US>

璁╂垜浠潵鍥為【涓涓嬩簩鍙夋悳绱㈡爲鐨勫垹闄よ妭鐐?span lang=EN-US>z鐨勮繃紼嬶細濡傛灉z娌℃湁瀛愯妭鐐癸紝閭d箞鐩存帴鍒犻櫎鍗沖彲錛涘鏋?span lang=EN-US>z鍙湁涓涓瓙鑺傜偣錛岄偅涔堣榪欎釜瀛愯妭鐐規(guī)潵浠f浛z鐨勪綅緗紝鐒跺悗鎶?span lang=EN-US>z鍒犻櫎鍗沖彲錛涘鏋?span lang=EN-US>z鏈変袱涓瓙鑺傜偣錛岄偅涔堟壘鍒?span lang=EN-US>z鍦ㄤ腑搴忛亶鍘嗕腑鐨勫悗緇ц妭鐐?span lang=EN-US>s錛堜篃灝辨槸浠?span lang=EN-US>z->rchild寮濮嬪悜宸︿笅鏂逛竴鐩磋蛋鍒板簳鐨勯偅涓涓妭鐐癸級錛屾妸s鐨?span lang=EN-US>key璧嬪肩粰z鐨?span lang=EN-US>key錛岀劧鍚庡垹闄?span lang=EN-US>s銆?span lang=EN-US>

綰㈤粦鏍戜腑鍒犻櫎涓涓妭鐐?span lang=EN-US>z鐨勬柟娉曚篃鏄鍏堟寜閮ㄥ氨鐝互涓婄殑榪囩▼銆?span lang=EN-US>

鎸夌収浜屽弶鎼滅儲鏍戠殑鍒犻櫎鏂規(guī)硶鍒犻櫎鑺傜偣錛屽鏋滃垹闄よ妭鐐規(guī)槸綰㈣壊鐨?/span>錛岄偅騫?span style="COLOR: red">涓嶄細鏀瑰彉綰㈤粦鏍戠殑鎬ц川銆傚鏋滃垹闄ょ殑鑺傜偣鏄?span style="COLOR: red">榛戣壊鐨?/span>錛岄偅涔堟樉鐒跺畠鎵鍦ㄧ殑璺緞涓婂氨灝戜竴涓粦鑹茶妭鐐癸紝閭d箞綰㈤粦鏍戠殑鎬ц川灝辮鐮村潖浜?/span>銆傝繖鏃舵垜浠氨瑕佹墽琛屼竴涓О涓?span lang=EN-US>Delete-Fixup鐨勮繃紼嬶紝鏉ヤ慨琛ヨ繖媯墊爲銆備笅闈㈡垜灝辨潵璁茶В涓涓嬨?span lang=EN-US>

涓涓妭鐐硅鍒犻櫎涔嬪悗錛屼竴瀹氭湁涓涓畠鐨勫瓙鑺傜偣浠f浛浜嗗畠鐨勪綅緗紙鍗充嬌鏄彾鑺傜偣琚垹闄ゅ悗錛屼篃浼氭湁涓涓┖鑺傜偣鏉ヤ唬鏇垮畠鐨勪綅緗傚墠闈㈣榪囷紝鍦ㄧ孩榛戞爲涓紝絀鴻妭鐐規(guī)槸涓涓疄闄呭瓨鍦ㄧ殑鑺傜偣銆傦級銆傛垜浠氨璁炬寚閽?span lang=EN-US>x鎸囧悜榪欎釜浠f浛浣嶇疆鐨勮妭鐐廣?span lang=EN-US>
鏄劇劧錛屽鏋?span lang=EN-US>x鏄孩鑹茬殑錛岄偅涔堟垜浠彧瑕佹妸瀹冭鎴愰粦鑹詫紝瀹冩墍鍦ㄧ殑璺緞涓婂氨閲嶆柊澶氬嚭浜嗕竴涓粦鑹茶妭鐐癸紝閭d箞綰㈤粦鏍戠殑鎬ц川灝辨弧瓚充簡銆?span lang=EN-US>
    鐒惰岋紝濡傛灉x鏄粦鑹茬殑錛岄偅鎴戜滑灝辮鍋囨兂x涓婅儗璐熶簡2涓崟浣嶇殑榛戣壊銆傞偅涔堢孩榛戞爲鐨勬ц川涔熷悓鏍蜂笉鐮村潖錛屼絾鏄垜浠鎵懼埌鏌愪竴涓孩鑹茬殑鑺傜偣錛屾妸x涓?span lang=EN-US>“瓚呰澆鐨勮繖1涓崟浣嶇殑榛戣壊涓㈢粰瀹冿紝榪欐牱鎵嶇畻瀹屾垚銆?span lang=EN-US>Delete-Fixup鍋氱殑灝辨槸榪欎釜宸ヤ綔銆?span lang=EN-US>

娉細鍒犻櫎浜嗕竴涓粦鑹茶妭鐐逛互鍚庯紝閬嶅巻鍒拌妭鐐逛竴涓嬬殑鍙跺瓙鑺傜偣姣旈亶鍘嗗叾浠栧垎鏀殑鍙跺瓙鑺傜偣鐨勯粦鑹茶妭鐐規(guī)暟灝卞皯浜嗕竴涓紝榪欏氨瑕佹槸鎵懼埌涓涓孩鑹詫紝鎶婅繖涓妭鐐規(guī)崲鎴愰粦鑹叉潵鎷熻ˉ榪欎釜鍒犻櫎鐨勯粦鑹茶妭鐐癸紝浣垮緱閬嶅巻鍒板彾瀛愯妭鐐圭粡榪囬粦鑹茶妭鐐圭殑鏁扮洰涓鏍楓?span lang=EN-US>

Delete-Fixup鍚屾牱鏄竴涓驚鐜凱浠g殑榪囩▼銆傛瘡涓嬈¤凱浠e紑濮嬫椂錛屽鏋滄寚閽?span lang=EN-US>x鎸囧悜涓涓孩鑹茶妭鐐癸紝閭d箞澶у姛鍛婃垚錛屾妸瀹冭鎴愰粦鑹插嵆鍛婄粓銆傜浉鍙嶅鏋?span lang=EN-US>x榛戣壊錛岄偅涔堟垜浠氨浼氶潰瀵?span style="COLOR: red">浠ヤ笅4縐嶆儏鍐?/span>銆?span lang=EN-US>

榪欓噷寮曞叆鍙︿竴涓寚閽?span lang=EN-US>w錛屾寚鍚?span lang=EN-US>x鐨勫厔寮熴傝繖閲屾垜浠兘榛樿x鏄?span lang=EN-US>x->parent鐨勫乏瀛愯妭鐐癸紝鍒?span lang=EN-US>w鏄?span lang=EN-US>x->parent鐨勫彸瀛愯妭鐐廣傦紙濡傛灉瀹為檯閬囧埌鐩稿弽鐨勬儏鍐碉紝鍙鎶婃墍鏈夋搷浣滀腑鐨勫乏銆佸彸浜掑弽涓涓嬪氨鍙互浜嗐傦級

Case 1. w鏄孩鑹層傝繖鏃舵垜浠牴鎹孩榛戞爲鐨勬ц川鍙互鑲畾x->parent鏄粦鑹層?span lang=EN-US>w->lchild鏄粦鑹層傛垜浠妸x->parent涓?span lang=EN-US>w鐨勯鑹蹭簰鎹紝鐒跺悗鍋氫竴嬈?span lang=EN-US>Left-Rotate(x->parent)銆傚仛瀹屼箣鍚?span lang=EN-US>x灝辨湁浜嗕竴涓柊鐨勫厔寮燂細鍘?span lang=EN-US>w->lchild錛屽墠闈㈣榪囧畠涓瀹氭槸榛戣壊鐨勩傞偅涔堟垜浠氨鍦ㄤ笉鐮村潖綰㈤粦鏍戞ц川鐨勫墠鎻愪笅錛屾妸Case 1杞崲鎴愪簡Case2銆?span lang=EN-US>3銆?span lang=EN-US>4涓殑涓涓紝涔熷氨鏄?span lang=EN-US>w鏄粦鑹茬殑鎯呭喌銆傛濊冧竴涓嬶紝榪欐牱鍋氫笉浼氭敼鍙樻瘡鏉¤礬寰勪笂榛戣壊鑺傜偣鐨勪釜鏁幫紝濡備笅鍥撅細

娉細鍙互鐪嬪嚭榪欐牱鍙樺寲浠ュ悗灝卞彉鎴愪簡Case2浜嗐?span lang=EN-US>

Case 2. w鏄粦鑹詫紝騫朵笖w鐨勪袱涓瓙鑺傜偣閮芥槸榛戣壊銆傝繖鏃舵垜浠彧瑕佹妸w璁炬垚綰㈣壊銆傜劧鍚庢妸x縐誨埌x->parent錛屽紑濮嬩笅涓杞凱浠o紙娉ㄦ剰錛岄偅瓚呰澆鐨?span lang=EN-US>1鍗曚綅鐨勯粦鑹插緇堟槸璺熺潃鎸囬拡x璧扮殑錛岀洿鍒?span lang=EN-US>x璧板埌浜嗕竴涓孩鑹茶妭鐐逛笂鎵嶈兘鎶婂畠鍗鎬笅錛夈傛濊冧竴涓嬶紝榪欎竴嬈℃搷浣滀笉浼氱牬鍧忕孩榛戞爲鐨勬ц川銆傚涓嬪浘錛堝浘涓妭鐐?span lang=EN-US>B涓嶄竴瀹氭槸綰㈣壊錛屼篃鍙兘鏄粦鑹詫級錛?span lang=EN-US>

娉細榪欓噷鍙鎶?span lang=EN-US>B鍙樻垚綰㈣壊灝卞ぇ鍔熷憡鎴愪簡銆?span lang=EN-US>

Case 3. w鏄粦鑹詫紝騫朵笖w鐨勪袱涓瓙鑺傜偣宸︾孩鍙抽粦銆傝繖鏃舵垜浠妸w涓?span lang=EN-US>w->lchild鐨勯鑹蹭簰鎹紝鐒跺悗鍋?span lang=EN-US>Right-Rotate(w)銆傛濊冧竴涓嬶紝榪欐牱鍋氫箣鍚庝笉浼氱牬鍧忕孩榛戞爲鐨勬ц川銆傝繖鏃?span lang=EN-US>x鐨勬柊鐨勫厔寮熷氨鏄師w->lchild銆?span style="COLOR: red">鑰?span lang=EN-US>Case 3琚漿鍖栨垚浜?span lang=EN-US>Case 4銆?/span>

Case 4. w鏄粦鑹詫紝騫朵笖w鐨勫彸瀛愯妭鐐規(guī)槸綰㈣壊銆備竴浣嗛亣鍒?span lang=EN-US>Case 4錛屽氨鑳滃埄鍦ㄦ湜浜嗐傛垜鐪嬩笅闈竴寮犲浘銆傚厛鎶?span lang=EN-US>w涓?span lang=EN-US>x->parent鐨勯鑹蹭簰鎹紝鍐嶅仛Left-Rotate(x->parent)銆傝繖鏃跺浘涓妭鐐?span lang=EN-US>E錛堜篃灝辨槸鍘?span lang=EN-US>w->rchild錛夋墍鍦ㄧ殑璺緞灝辮偗瀹氬皯浜嗕竴涓粦鑹詫紝鑰?span lang=EN-US>x鎵鍦ㄧ殑璺緞鍒欏浜嗕竴涓粦鑹層傞偅涔堟垜浠氨鎶?span lang=EN-US>x涓婂浣欑殑1涓崟浣嶇殑榛戣壊涓㈢粰E灝卞彲浠ヤ簡銆傝嚦姝わ紝Delete-Fixup灝遍『鍒╁畬鎴愪簡銆?span lang=EN-US>

娉細閫氳繃娉?span lang=EN-US>1鎴戜滑鍙互鐪嬪嚭闂鍦?span lang=EN-US>Case4鍚庡凡緇忚В鍐充簡銆?span lang=EN-US>

void delFixup(RBTNode* delNode) {

    RBTNode* p = delNode;

    while (p != m_root && p->color == BLACK) {

       if (p == p->parent->lchild) {//宸﹁竟鎯呭喌錛屼互涓嬫槸鍥涚涓嶅悓鐨?/span>Case

           RBTNode* sibling = p->parent->rchild;

           if (sibling->color == RED) {

              sibling->color = BLACK;

              p->parent->color = RED;

              leftRotate(p->parent);

              sibling = p->parent->rchild;

           }

           if (sibling->lchild->color == BLACK

              && sibling->rchild->color == BLACK

              ) {

              sibling->color = RED;

              p = p->parent;

           }

           else {

              if (sibling->rchild->color == BLACK) {

                  sibling->lchild->color = BLACK;

                  sibling->color = RED;

                  rightRotate(sibling);

                  sibling  = sibling->parent;

              }

              sibling->color = sibling->parent->color;

              sibling->parent->color = BLACK;

              sibling->rchild->color = BLACK;

              leftRotate(sibling->parent);

              p = m_root;

           }

       }

       else {//鍙寵竟鎯呭喌

           RBTNode* sibling = p->parent->lchild;

           if (sibling->color == RED) {

              sibling->color = BLACK;

              p->parent->color = RED;

              rightRotate(p->parent);

              sibling = p->parent->lchild;

           }

           if (sibling->lchild->color == BLACK

              && sibling->rchild->color == BLACK

              ) {

              sibling->color = RED;

              p = p->parent;

           }

           else {

              if (sibling->lchild->color == BLACK) {

                  sibling->rchild->color = BLACK;

                  sibling->color = RED;

                  leftRotate(sibling);

                  sibling = sibling->parent;

              }

              sibling->color = sibling->parent->color;

              sibling->parent->color = BLACK;

              sibling->lchild->color = BLACK;

              rightRotate(sibling->parent);

              p = m_root;

           }

       }

    }

    p->color = BLACK;

}



婕傛紓 2008-11-22 14:16 鍙戣〃璇勮
]]>
鏁板涔嬬編鐣綃囷細蹇帓涓轟粈涔堥偅鏍峰揩(杞級http://m.shnenglu.com/AutomateProgram/archive/2008/11/21/67512.html婕傛紓婕傛紓Fri, 21 Nov 2008 11:07:00 GMThttp://m.shnenglu.com/AutomateProgram/archive/2008/11/21/67512.htmlhttp://m.shnenglu.com/AutomateProgram/comments/67512.htmlhttp://m.shnenglu.com/AutomateProgram/archive/2008/11/21/67512.html#Feedback0http://m.shnenglu.com/AutomateProgram/comments/commentRss/67512.htmlhttp://m.shnenglu.com/AutomateProgram/services/trackbacks/67512.htmlhttp://blog.csdn.net/pongba/archive/2008/06/13/2544933.aspx

By 鍒樻湭楣?span lang=EN-US>(pongba)

C++鐨勭綏嫻(http://blog.csdn.net/pongba)

TopLanguage(http://groups.google.com/group/pongba)

 

鐩綍

0. 鍓嶈█

1. 鐚滄暟瀛?span lang=EN-US>

2. 縐扮悆

3. 鎺掑簭

    3.1 涓轟粈涔堝爢鎺掓瘮蹇帓鎱?span lang=EN-US>

    3.2 涓轟粈涔堝揩鎺掑叾瀹炰篃涓嶆槸閭d箞蹇?span lang=EN-US>

    3.3 鍩烘帓鍙堜負浠涔堥偅涔堝揩鍛?span lang=EN-US>

4. 淇℃伅璁猴紒淇℃伅璁猴紵

5. 灝忕粨

 

0. 鍓嶈█

    鐭ラ亾榪欎釜鐞嗚鏄湪TopLanguage涓婄殑涓嬈¤璁猴紝鍏堟槸g9杞簡David MacKay鐨勪竴綃囨枃绔?/span>錛岀劧鍚庡紩鍙戜簡鐗涗漢浠殑涓鍦哄叧浜庝俊鎭鐨勮璁?/font>銆?span lang=EN-US>Anyway錛屾濡?span lang=EN-US>g9寰堜箙浠ュ墠鍦?span lang=EN-US>Blog閲岄潰鎵璇?/font>鐨勶細

鏈夋椂鏃犵煡鏄銆備亢鐪嬪埌涓鐐規(guī)柊椴滅殑縐戞櫘涔熻兘瑙夊緱閫犲寲紲炲銆傚垰鎵嶈Gerald Jay Sussman錛?span lang=EN-US>SICP浣滆咃級鐨勬枃绔狅紝Building Robust Systems – an essay錛岀珶鐒跺績濡傚皬楣夸貢鎾烇紝鎵嬪績婀挎鼎錛屼豢浣?jīng)绗竴嬈℃彙浣忓垵鎭嬫儏浜烘俯鏌旂殑鎵嬨?span lang=EN-US>

    鑰岀湅鍒?span lang=EN-US>MacKay鐨勮繖綃囨枃绔犳垜涔熸湁榪欑鎰熻鈥斺?/span>浠ュ墠妯$硦鐨勪笢瑗垮拷鐒舵湁浜嗘繁鍒葷殑瑙i噴錛屼竴鍒囬】鏃跺彉寰楁槑鐧芥棤姣斻傚師鏉ョ湅闂鐨勮搴︽垨灞傞潰鑳藉甯︽潵榪欎箞澶х殑鍙樺寲銆傚啀涓嬈″嵃璇佷簡瓚婃槸娣卞埢鐨勫師鐞嗗線寰瓚婃槸綆鍗曞拰寮哄ぇ銆傛墍浠ヨ錛屽湡槌栦篃鏈夊湡槌栫殑騫哥:P

榪欑瘒鏂囩珷鐩稿綋浜?span lang=EN-US>MacKay鍘熸枃鐨勭櫧璇濇枃鐗堛?span lang=EN-US>MacKay鍦ㄥ師鏂囦腑鐢ㄥ埌浜嗕俊鎭鐨勭煡璇嗭紝鍚庤呭湪鎴戠湅鏉ュ茍涓嶆槸蹇呴』鐨勶紝灝界璁$畻鐨勬椂鍊欐柟渚匡紝浣嗕笌鏈川鏃犲叧銆傛墍浠ユ垜鐢ㄥぇ鐧借瘽瑙i噴浜嗕竴閫氥?

 

1. 鐚滄暟瀛?

    鎴戜滑鍏堟潵鐜╀竴涓寽鏁板瓧娓告垙錛氭垜蹇冮噷榛樺康涓涓?span lang=EN-US>1~64涔嬮棿鐨勬暟錛屼綘鏉ョ寽錛堜綘鍙兘闂瓟妗堟槸鏄?span lang=EN-US>”鎴?span lang=EN-US>“鍚?span lang=EN-US>”鐨勯棶棰橈級銆備負浜嗕繚璇佷笉璁哄湪浠涔堟儏鍐典笅閮借兘浠ュ敖閲忓皯鐨勬鏁扮寽涓紝浣犲簲璇ラ噰鍙栦粈涔堢瓥鐣ュ憿錛熷緢鏄劇劧錛屼簩鍒嗐傚厛鏄寽鏄笉鏄綅浜?span lang=EN-US>1~32涔嬮棿錛屾帓闄ゆ帀涓鍗婂彲鑳芥э紝鐒跺悗瀵瑰尯闂寸戶緇簩鍒嗐傝繖縐嶇瓥鐣ヨ兘澶熶繚璇佹棤璁烘暟瀛楁庝箞璺熶綘鎹夎糠钘忥紝閮借兘鍦?span lang=EN-US>log_2{n}嬈′互鍐呯寽涓傜敤綆楁硶鐨勬湳璇潵璇村氨鏄畠鐨勪笅鐣屾槸鏈濂界殑銆?

    鎴戜滑鍐嶆潵鍥為【涓涓嬭繖涓父鎴忔墍钑村惈鐨勬湰璐細涓轟粈涔堣繖縐嶇瓥鐣ュ叿鏈夋渶浼樹笅鐣岋紵絳旀涔熷緢綆鍗曪紝榪欎釜絳栫暐鏄鉤琛$殑銆傚弽涔嬪鏋滅瓥鐣ヤ笉鏄鉤琛$殑錛屾瘮濡傞棶鏄笉鏄湪1~10涔嬮棿錛岄偅涔堜竴鏃﹀彂鐜頒笉鏄湪1~10涔嬮棿鐨勮瘽灝變細鍓╀笅姣?span lang=EN-US>N/2鏇村鐨勫彲鑳芥ч渶瑕佸幓鑰冨療浜嗐?

    寰愬鍦ㄨ璁轟腑鎻愬埌錛岃繖縐嶇瓥鐣ョ殑鏈川鍙互姒傛嫭鎴?span lang=EN-US>“璁╂湭鐭ヤ笘鐣屾棤鏈哄彲涔?span lang=EN-US>”銆傚畠鏄病鏈?span lang=EN-US>“寮辯偣鐨?span lang=EN-US>”錛岀瓟妗堢殑浠諱綍涓涓垎鏀兘鏄瓑姒傜巼鐨勩傚弽涔嬶紝涓鏃︽煇涓垎鏀暣鍚殑鍙兘鎬ф洿澶氾紝褰撴儏鍐佃惤鍒伴偅涓垎鏀笂鐨勬椂鍊欎綘灝遍儊闂蜂簡銆傛瘮濡傜寽鏁板瓧娓告垙鏈緋熺硶鐨勭瓥鐣ュ氨鏄竴涓竴涓殑鐚滐細鏄?span lang=EN-US>1鍚楋紵鏄?span lang=EN-US>2鍚楋紵... 鍥犱負榪欑鐚滄硶鏈宸殑鎯呭喌涓嬮渶瑕?span lang=EN-US>64嬈℃墠鑳界寽瀵癸紝涓嬬晫闈炲父緋熺硶銆備簩鍒嗘悳绱負浠涔堝ソ錛屽氨鏄洜涓哄畠姣忔閮藉皢鍙兘鎬ф帓闄や竴鍗婂茍涓旀棤璁哄浣曢兘鑳芥帓闄や竴鍗婏紙瀹冩槸鏈緋熸儏鍐典笅琛ㄧ幇鏈濂界殑錛夈?

 

2. 縐扮悆

    12涓皬鐞冿紝鍏朵腑鏈変竴涓槸鍧忕悆銆傛湁涓鏋跺ぉ騫熾傞渶瑕佷綘鐢ㄦ渶灝戠殑縐版鏁版潵紜畾鍝釜灝忕悆鏄潖鐨勫茍涓斿畠鍒板簳鏄交榪樻槸閲嶃?

    榪欎釜闂鏄竴閬撴祦浼犲凡涔呯殑鏅哄姏棰樸傜綉緇滀笂涔熸湁寰堝璁茶В錛岃繕鏈夋硾鍖栧埌N涓悆鐨勬儏鍐典笅鐨勪弗鏍艱瘉鏄庛備篃鏈夐浂鏄熺殑涓浜涘湴鏂規(guī)彁鍒頒粠淇℃伅璁虹殑瑙掑害鏉ョ湅寰呮渶浼樿В娉曘傛湰鏉ユ垜涓鐩磋涓鴻繖閬撻鐩櫎浜嗚瘯閿欎箣澶栨病鏈夊叾瀹冮珮濡欑殑鎬濊礬浜嗭紝鍙兘涓涓釜鏂規(guī)硶璇曪紝騫跺敖閲忎粠緇撴灉涓鎵句俊鎭紝鐒跺悗鐪嬬湅鍝鏂規(guī)鏈灝戙?

    鐒惰岋紝瀹為檯涓婂畠鐨勭‘鏈夊叾瀹冪殑鎬濊礬錛屼竴涓洿鏈川鐨勬濊礬錛岃屼笖鏍規(guī)湰鐢ㄤ笉鐫淇℃伅璁鴻繖涔堟嫍鍙g殑鐭ヨ瘑銆?

    鎴戜滑鍏堝洖欏句竴涓嬬寽鏁板瓧娓告垙銆備負浜嗕繚璇佷換浣曟儏鍐典笅浠ユ渶灝戞鏁扮寽涓紝鎴戜滑鐨勭瓥鐣ユ槸姣忔閮芥帓闄ゆ伆濂戒竴鍗婄殑鍙兘鎬с傜被姣斿埌縐扮悆闂涓婏細鍧忕悆鍙兘鏄?span lang=EN-US>12涓悆涓殑浠繪剰涓涓紝榪欏氨鏄?span lang=EN-US>12縐嶅彲鑳芥э紱鑰屽叾涓瘡縐嶅彲鑳芥т笅鍧忕悆鍙兘杞諱篃鍙兘閲嶃備簬鏄?span lang=EN-US>“鍧忕悆鏄摢涓悆錛屾槸杞繪槸閲?span lang=EN-US>”榪欎釜闂鐨勭瓟妗堝氨鏈?span lang=EN-US>12×2=24縐嶅彲鑳芥с傜幇鍦ㄦ垜浠敤澶╁鉤鏉ョО鐞冿紝灝辯瓑鍚屼簬瀵硅繖24縐嶅彲鑳芥у彂闂紝鐢變簬澶╁鉤鐨勮緭鍑虹粨鏋滄湁涓夌騫寵 銆佸乏鍊俱佸彸鍊?span lang=EN-US>”錛岃繖灝辯浉褰撲簬鎴戜滑鐨勯棶棰樻湁涓変釜絳旀錛屽嵆鍙互灝嗘墍鏈夌殑鍙兘鎬у垏鎴愪笁浠斤紝鏍規(guī)嵁鐚滄暟瀛楁父鎴忕殑鍚彂錛屾垜浠簲褰撳敖閲忚榪欎笁涓垎鏀鐜囧潎絳夛紝鍗沖鉤鍧囧垏鍒嗘墍鏈夌殑鍙兘鎬т負涓夌瓑浠姐傚姝や竴鏉ョ殑璇濅竴嬈$О閲忓氨鍙互灝嗙瓟妗堢殑鍙兘鎬х緝鍑忎負鍘熸潵鐨?span lang=EN-US>1/3錛屼笁嬈″氨鑳界緝鍑忎負1/27銆傝屾誨叡鎵嶆湁24縐嶅彲鑳芥э紝鎵浠ョ悊璁轟笂鏄畬鍏ㄥ彲浠?span lang=EN-US>3嬈$О鍑烘潵鐨勩?

    濡備綍縐扮殑鎸囧鍘熷垯鏈変簡錛屾瀯閫犱竴涓О鐨勭瓥鐣ュ氨涓嶆槸浠涔堝お鍥伴毦鐨勪簨鎯呬簡銆傞鍏堜笉濡ㄨВ閲婁竴涓嬩負浠涔堟渶鐩磋鐨勭О娉曚笉鏄渶浼樼殑鈥斺?銆?span lang=EN-US>6縐幫細鍦?span lang=EN-US>6銆?span lang=EN-US>6縐扮殑鏃跺欙紝澶╁鉤騫寵 鐨勫彲鑳芥ф槸0銆傚垰鎵嶈浜嗭紝鏈浼樼瓥鐣ュ簲璇ヤ嬌寰楀ぉ騫充笁縐嶇姸鎬佺殑姒傜巼鍧囩瓑錛岃繖鏍鋒墠鑳戒笁絳夊垎絳旀鐨勬墍鏈夊彲鑳芥с?

   涓轟簡鏇存竻妤氱殑鐪嬪緟榪欎釜闂錛屾垜浠笉濡ㄥ亣璁炬湁6涓悆錛屾潵鑰冭檻涓涓?span lang=EN-US>3銆?span lang=EN-US>3縐板拰2銆?span lang=EN-US>2縐扮殑鍖哄埆錛?

   鍦ㄦ湭縐頒箣鍓嶏紝涓鍏辨湁12縐嶅彲鑳芥э細1杞匯?span lang=EN-US>1閲嶃?span lang=EN-US>2杞匯?span lang=EN-US>2閲嶃?span lang=EN-US>...銆?span lang=EN-US>6杞匯?span lang=EN-US>6閲嶃傜幇鍦ㄥ皢1銆?span lang=EN-US>2銆?span lang=EN-US>3鍙鋒斁鍦ㄥ乏杈癸紝4銆?span lang=EN-US>5銆?span lang=EN-US>6鏀懼湪鍙寵竟3銆?span lang=EN-US>3縐頒簡涔嬪悗錛屼笉澶變竴鑸у亣璁懼ぉ騫沖乏鍊撅紝閭d箞灝忕悆鐨勫彲鑳芥у氨鍙樻垚浜嗗師鏉ョ殑涓鍗婏紙6縐嶏級錛?span lang=EN-US>1閲嶃?span lang=EN-US>2閲嶃?span lang=EN-US>3閲嶃?span lang=EN-US>4杞匯?span lang=EN-US>5杞匯?span lang=EN-US>6杞匯傚嵆榪欑縐版硶鑳芥帓闄や竴鍗婂彲鑳芥с?

    鐜板湪鍐嶆潵鐪?span lang=EN-US>2銆?span lang=EN-US>2縐版硶錛屽嵆1銆?span lang=EN-US>2鏀懼乏杈癸紝3銆?span lang=EN-US>4鏀懼彸杈癸紝鍓╀笅鐨?span lang=EN-US>5銆?span lang=EN-US>6涓嶇О錛屾斁涓杈廣傚亣璁劇粨鏋滄槸澶╁鉤騫寵 錛岄偅涔堝彲鑳芥у墿涓?span lang=EN-US>鈥斺?縐嶏細5閲嶃?span lang=EN-US>5杞匯?span lang=EN-US>6閲嶃?span lang=EN-US>6杞匯傚亣璁懼ぉ騫沖乏鍊撅紝鍙兘鎬т篃鍓╀笅4縐嶏細1閲嶃?span lang=EN-US>2閲嶃?span lang=EN-US>3杞匯?span lang=EN-US>4杞匯傚彸鍊懼拰宸﹀劇殑鎯呭喌綾諱技銆傛諱箣錛岃繖縐嶇О娉曪紝涓嶇澶╁鉤緇撴灉濡備綍錛屾儏鍐甸兘琚垜浠緝?yōu)畯鍒颁簡鍘熸潵鐨勪笁鍒嗕箣涓錛佹垜浠厖鍒嗗埄鐢ㄤ簡澶╁鉤鐨勭粨鏋滅姸鎬佸彲鑳芥湁涓夌榪欎釜鏉′歡鏉ヤ笁絳夊垎鎵鏈夊彲鑳芥э紝鑰屼笉鏄簩絳夊垎銆?

    璇村埌榪欓噷錛屽墿涓嬬殑浜嬫儏灝卞疄鍦ㄥ緢綆鍗曚簡錛氱浜屾縐版硶錛屽彧瑕佽鐫榪欐牱涓涓寚瀵兼濇兂鈥斺?/span>浣犻夋嫨鐨勭О娉曞繀欏諱嬌寰楀綋澶╁鉤騫寵 鐨勬椂鍊欑瓟妗堝墿涓嬬殑鍙兘鎬у拰澶╁鉤宸﹀撅紙鍙沖撅級鐨勬椂鍊欑瓟妗堝墿涓嬬殑鍙兘鎬т竴鏍峰銆傚疄闄呬笂錛岃繖絳夊悓浜庝綘寰楅夋嫨涓縐嶇О娉曪紝浣垮緱澶╁鉤杈撳嚭涓夌緇撴灉鐨勬鐜囨槸鍧囩瓑鐨勶紝鍥犱負澶╁鉤杈撳嚭鏌愪釜緇撴灉鐨勬鐜囧氨絳夊悓浜庢墍鏈夋敮鎸佽繖涓粨鏋滐紙宸﹀俱佸彸鍊俱佸鉤琛★級鐨勭瓟妗堝彲鑳芥х殑鍜岋紝騫朵笖絳旀鐨勬瘡涓彲鑳芥ч兘鏄瓑姒傜巼鐨勩?

MacKay鍦ㄤ粬鐨勪功銆?span lang=EN-US>Information Theory: Inference and Learning Algorithms銆嬶紙浣滆呭紑鏀懼厤璐圭數(shù)瀛愪功錛夐噷闈?span lang=EN-US>4.1鑺備笓闂ㄨ浜嗚繖涓О鐞冮棶棰橈紝榪樼敾浜嗕竴寮犱笉閿欑殑鍥撅紝鎴戝氨鐓ф妱浜嗭細

    鍥句腑“1+”鏄寚“1鍙峰皬鐞冧負閲?span lang=EN-US>”榪欎竴鍙兘鎬с備竴寮濮嬩竴鍏辨湁24縐嶅彲鑳芥с?span lang=EN-US>4銆?span lang=EN-US>4縐頒簡涔嬪悗涓嶇鍝鎯呭喌錛堝垎鏀級錛屽墿涓嬫潵鐨勫彲鑳芥ф繪槸4縐嶃傝繖鏄竴涓畬緹庣殑涓夊垎銆傜劧鍚庡姣忎釜鍒嗘敮鏋勯犵浜屾縐版硶錛岃繖閲屼綘鍙紼嶅姞婕旂畻灝卞彲浠ュ彂鐜幫紝鍒嗘敮1涓婄殑絎簩嬈$О娉曪紝鍗?span lang=EN-US>“1銆?span lang=EN-US>2銆?span lang=EN-US>6瀵?span lang=EN-US>3銆?span lang=EN-US>4銆?span lang=EN-US>5”榪欑縐版硶錛屽ぉ騫寵緭鍑轟笁縐嶇粨鏋滅殑鍙兘鎬ф槸鍧囩瓑鐨勶紙涓ユ牸鏉ヨ鏄嚑涔庡潎絳夛級銆傝繖灝辨槸涓轟粈涔堣繖涓О娉曡兘澶熷湪鏈鍧忕殑鎯呭喌涓嬩篃鑳借〃鐜版渶濂界殑鍘熷洜錛屾病鏈夊摢涓垎鏀槸瀹冪殑寮辯偣錛屽畠蹇呯劧鑳藉皢鎯呭喌緙╁皬鍒板師鏉ョ殑1/3銆?

 

3. 鎺掑簭

    鐢ㄥ墠闈㈢殑鐪嬮棶棰樿瑙掞紝鎺掑簭鐨勬湰璐ㄥ彲浠ヨ繖鏍鋒潵琛ㄨ堪錛氫竴緇勬湭鎺掑簭鐨?span lang=EN-US>N涓暟瀛楋紝瀹冧滑涓鍏辨湁N!縐嶉噸鎺掞紝鍏朵腑鍙湁涓縐嶆帓鍒楁槸婊¤凍棰樻剰鐨勶紙璀浠庡ぇ鍒板皬鎺掑垪錛夈傛崲鍙ヨ瘽璇達紝鎺掑簭闂鐨勫彲鑳芥т竴鍏辨湁N!縐嶃備換浣曞熀浜庢瘮杈冪殑鎺掑簭鐨勫熀鏈搷浣滃崟鍏冮兘鏄?span lang=EN-US>“姣旇緝a鍜?span lang=EN-US>b”錛岃繖灝辯浉褰撲簬鐚滄暟瀛楁父鎴忛噷闈㈢殑涓涓棶鍙ワ紝鏄劇劧榪欎釜闂彞鐨勭瓟妗堝彧鑳芥槸鏄?span lang=EN-US>”鎴?span lang=EN-US>“鍚?span lang=EN-US>”錛屼竴涓彧鏈変袱縐嶈緭鍑虹殑闂鏈澶氬彧鑳藉皢鍙兘鎬х┖闂村垏鎴愪袱鍗婏紝鏍規(guī)嵁涓婇潰鐨勬濊礬錛屾渶浣?jīng)_垏娉曞氨鏄垏鎴?span lang=EN-US>1/2鍜?span lang=EN-US>1/2銆備篃灝辨槸璇達紝鎴戜滑甯屾湜鍦ㄦ瘮杈冧簡a鍜?span lang=EN-US>b鐨勫ぇ灝忓叧緋諱箣鍚庯紝濡傛灉鍙戠幇a<b鐨勮瘽鍓╀笅鐨勬帓鍒楀彲鑳芥у氨鍙樻垚N!/2錛屽鏋滃彂鐜?span lang=EN-US>a>b涔熸槸鍓╀笅N!/2縐嶅彲鑳芥с傜敱浜庡亣璁炬瘡縐嶆帓鍒楃殑姒傜巼鏄潎絳夌殑錛屾墍浠ヨ繖涔熷氨鎰忓懗鐫鏀寔a<b鐨勬帓鍒椾竴鍏辨湁N!/2涓紝鏀寔a>b鐨勪篃鏄?span lang=EN-US>N!/2涓紝鎹㈣█涔嬶紝a<b鐨勬鐜囩瓑浜?span lang=EN-US>a>b鐨勬鐜囥?

    鎴戜滑甯屾湜姣忔鍦ㄦ瘮杈?span lang=EN-US>a鍜?span lang=EN-US>b鐨勬椂鍊欙紝a<b鍜?span lang=EN-US>a>b鐨勬鐜囨槸鍧囩瓑鐨勶紝榪欐牱鎴戜滑灝辮兘淇濊瘉鏃犺濡備綍閮借兘灝嗗彲鑳芥х緝?yōu)畯湄撳師鏉ョ殑涓鍗婁簡錛佹渶浼樹笅鐣屻?

    涓涓洿鎺ョ殑鎺ㄨ鏄紝濡傛灉姣忔閮藉儚涓婇潰榪欐牱鐨勫畬緹庢瘮杈冿紝閭d箞N涓厓绱犵殑N!縐嶅彲鑳芥帓鍒楀彧闇瑕?span lang=EN-US>log_2{N!}灝辨帓鏌ョ帺浜嗭紝鑰?span lang=EN-US>log_2{N!}榪戜技浜?span lang=EN-US>NlogN銆傝繖姝f槸蹇帓鐨勫鏉傚害銆?

    3.1 涓轟粈涔堝爢鎺掓瘮蹇帓鎱?

    鍥為【涓涓嬪爢鎺掔殑榪囩▼錛?

    1. 寤虹珛鏈澶у爢錛堝爢欏剁殑鍏冪礌澶т簬鍏朵袱涓効瀛愶紝涓や釜鍎垮瓙鍙堝垎鍒ぇ浜庡畠浠悇鑷笅灞炵殑涓や釜鍎垮瓙... 浠ユ綾繪帹錛?

    2. 灝嗗爢欏剁殑鍏冪礌鍜屾渶鍚庝竴涓厓绱犲璋冿紙鐩稿綋浜庡皢鍫嗛《鍏冪礌錛堟渶澶у鹼級鎷胯蛋錛岀劧鍚庡皢鍫嗗簳鐨勯偅涓厓绱犺ˉ涓婂畠鐨勭┖緙猴級錛岀劧鍚庤閭f渶鍚庝竴涓厓绱犱粠欏朵笂寰涓嬫粦鍒版伆褰撶殑浣嶇疆錛堥噸鏂頒嬌鍫嗘渶澶у寲錛夈?

    3. 閲嶅絎?span lang=EN-US>2姝ャ?

    榪欓噷鐨勫叧閿棶棰樺氨鍦ㄤ簬絎?span lang=EN-US>2姝ワ紝鍫嗗簳鐨勫厓绱犺偗瀹氬緢灝忥紝灝嗗畠鎷垮埌鍫嗛《鍜屽師鏈睘浜庢渶澶у厓绱犵殑涓や釜瀛愯妭鐐規(guī)瘮杈冿紝瀹冩瘮瀹冧滑澶х殑鍙兘鎬ф槸寰箮鍏跺井鐨勩傚疄闄呬笂瀹冭偗瀹氬皬浜庡叾涓殑涓涓効瀛愩傝屽ぇ浜庡彟涓涓効瀛愮殑鍙兘鎬ч潪甯稿皬銆備簬鏄紝榪欎竴嬈℃瘮杈冪殑緇撴灉灝辨槸姒傜巼涓嶅潎絳夌殑錛屾牴鎹墠闈㈢殑鍒嗘瀽錛屾鐜囦笉鍧囩瓑鐨勬瘮杈冩槸涓嶆槑鏅虹殑錛屽洜涓哄畠騫朵笉鑳戒繚璇佸湪緋熺硶鎯呭喌涓嬩篃鑳藉皢闂鐨勫彲鑳芥у墛鍑忓埌鍘熸湰鐨?span lang=EN-US>1/2銆傚彲浠ユ兂鍍忎竴縐嶆瀬绔儏鍐碉紝濡傛灉a鑲畾灝忎簬b錛岄偅涔堟瘮杈?span lang=EN-US>a鍜?span lang=EN-US>b灝變細浠涔堜俊鎭篃寰椾笉鍒?span lang=EN-US>鈥斺?/span>鍘熸湰鍓╀笅澶氬皯鍙兘鎬ц繕鏄墿涓嬪灝戝彲鑳芥с?

    鍦ㄥ爢鎺掗噷闈㈡湁澶ч噺榪欑榪戜箮鏃犳晥鐨勬瘮杈冿紝鍥犱負琚嬁鍒板爢欏剁殑閭d釜鍏冪礌鍑犱箮鑲畾鏄緢灝忕殑錛岃岄潬榪戝爢欏剁殑鍏冪礌鍙堝嚑涔庤偗瀹氭槸寰堝ぇ鐨勶紝灝嗕竴涓緢灝忕殑鏁板拰涓涓緢澶х殑鏁版瘮杈冿紝緇撴灉鍑犱箮鑲畾鏄?span lang=EN-US>“灝忎簬鐨勶紝榪欏氨鎰忓懗鐫闂鐨勫彲鑳芥у彧琚帓闄ゆ帀浜嗗緢灝忎竴閮ㄥ垎銆?

    榪欏氨鏄負浠涔堝爢鎺掓瘮杈冩參錛堝爢鎺掕櫧鐒跺拰蹇帓涓鏍峰鏉傚害閮芥槸O(NlogN)浣嗗爢鎺掑鏉傚害鐨勫父緋繪暟鏇村ぇ錛夈?

    MacKay涔熸彁渚涗簡涓涓慨鏀圭増鐨勫爢鎺掞細姣忔涓嶆槸灝嗗爢搴曠殑鍏冪礌鎷垮埌涓婇潰鍘伙紝鑰屾槸鐩存帴姣旇緝鍫嗛《錛堟渶澶э級鍏冪礌鐨勪袱涓効瀛愶紝鍗抽夊嚭嬈″ぇ鐨勫厓绱犮傜敱浜庤繖涓や釜鍎垮瓙涔嬮棿鐨勫ぇ灝忓叧緋繪槸寰堜笉紜畾鐨勶紝涓よ呴兘寰堝ぇ錛岃涓嶅ソ鍝釜鏇村ぇ鍝釜鏇村皬錛屾墍浠ヨ繖嬈℃瘮杈冪殑涓や釜緇撴灉灝辨槸姒傜巼鍧囩瓑鐨勪簡銆傚叿浣撳弬鑰?span lang=EN-US>榪欓噷銆?

3.2 涓轟粈涔堝揩鎺掑叾瀹炰篃涓嶆槸閭d箞蹇?

    鎴戜滑鑰冭檻蹇帓鐨勮繃紼嬶細闅忔満閫夋嫨涓涓厓绱犲仛杞村厓绱?span lang=EN-US>”錛屽皢鎵鏈夊ぇ浜庤醬鍏冪礌鐨勭Щ鍒板乏杈癸紝鍏朵綑縐誨埌鍙寵竟銆傛牴鎹繖涓繃紼嬶紝蹇帓鐨勭涓嬈℃瘮杈冨氨鏄皢涓涓厓绱犲拰杞村厓绱犳瘮杈冿紝榪欎釜鏃跺欐樉鑰屾槗瑙佺殑鏄紝澶т簬鍜?span lang=EN-US>“灝忎簬鐨勫彲鑳芥у悇鍗犱竴鍗娿傝繖鏄竴嬈℃紓浜殑姣旇緝銆?

    鐒惰岋紝蹇帓鐨勭浜屾姣旇緝?yōu)兏嶉偅涔堥珮鏄庝簡锛氭垜浠笉濡ㄤ护栳u鍏冪礌涓?span lang=EN-US>pivot錛岀涓嬈℃瘮杈冪粨鏋滄槸a1<pivot錛岄偅涔堝彲浠ヨ瘉鏄庣浜屾姣旇緝a2涔熷皬浜?span lang=EN-US>pivot鐨勫彲鑳芥ф槸2/3錛佽繖瀹規(guī)槗璇佹槑錛氬鏋?span lang=EN-US>a2>pivot鐨勮瘽錛岄偅涔?span lang=EN-US>a1錛?span lang=EN-US>a2錛?span lang=EN-US>pivot榪欎笁涓厓绱犱箣闂寸殑鍏崇郴灝卞畬鍏ㄧ‘瀹氫簡鈥斺攁1<pivot<a2錛屽墿涓嬫潵鐨勫厓绱犳帓鍒楃殑鍙兘鎬ф垜浠笉濡ㄨ涓?span lang=EN-US>P錛堜笉闇瑕佸叿浣撶畻鍑烘潵錛夈傝屽鏋?span lang=EN-US>a2<pivot鍛紵閭d箞a1鍜?span lang=EN-US>a2鐨勫叧緋誨氨浠嶇劧鏄笉紜畾鐨勶紝涔熷氨鏄錛岃繖涓垎鏀噷闈㈠惈鏈変袱縐嶆儏鍐碉細a1<a2<pivot錛屼互鍙?span lang=EN-US>a2<a1<pivot銆傚浜庡叾涓換涓縐嶆儏鍐碉紝鍓╀笅鐨勫厓绱犳帓鍒楃殑鍙兘鎬ч兘鏄?span lang=EN-US>P錛屼簬鏄繖涓垎鏀噷闈㈠墿涓嬬殑鎺掑垪鍙兘鎬у氨鏄?span lang=EN-US>2P銆傛墍浠ュ綋a2<pivot鐨勬椂鍊欙紝榪樺墿涓?span lang=EN-US>2/3鐨?nbsp; 鍙兘鎬ч渶瑕佹帓鏌ャ?

    鍐嶈繘涓姝ワ紝濡傛灉絎簩姝ユ瘮杈冩灉鐪熷彂鐜?span lang=EN-US>a2<pivot鐨勮瘽錛岀涓夋姣旇緝?yōu)鏇翠笉濡欎簡锛屾ā浠夸笂闈㈢殑鎺ㄧ悊锛?span lang=EN-US>a3<pivot鐨勬鐜囧皢浼氭槸3/4錛?

    榪欏氨鏄揩鎺掍篃涓嶉偅涔堝揩鐨勫師鍥狅紝鍥犱負瀹冧篃娌℃湁鍋氬埌姣忔姣旇緝閮借兘灝嗗墿涓嬬殑鍙兘鎬х爫鎺変竴鍗娿?

    3.3 楦℃帓涓轟粈涔堝張閭d箞蹇憿錛?

    浼犵粺鐨勮В閲婃槸錛?span lang=EN-US>鍩烘帓涓嶆槸鍩轟簬姣旇緝鐨勶紝鎵浠ヤ笉鍏鋒湁鍚庤呯殑灞闄愭с傝瘽鏄病閿欙紝浣嗗叾瀹炶繕鍙互灝嗗畠鍜屽熀浜庢瘮杈冪殑鎺掑簭鍋氫竴涓被姣斻?

    鍩烘帓鐨勮繃紼嬩篃璁告槸婧愪簬鎴戜滑鐞嗛『涓鍓墝鐨勮繃紼嬶細濡傛灉浣犳湁N錛?span lang=EN-US>N<=13錛夊紶鐗岋紝涔卞簭錛屽浣曠悊欏哄憿錛熸垜浠亣璞℃涓婃湁鍗佷笁涓綅緗紝鐒跺悗鎴戜滑灝嗘墜閲岀殑鐗屼竴寮犱竴寮犳斁鍑哄幓錛屽鏋滄槸3錛屽氨鏀懼湪浣嶇疆3涓婏紝濡傛灉鏄?span lang=EN-US>J錛屽氨鏀懼湪浣嶇疆11涓婏紝鏀懼畬浜嗕箣鍚庝粠浣嶇疆1鍒頒綅緗?span lang=EN-US>13鏀墮泦鎵鏈夌殑鐗岋紙娌℃湁鐗岀殑浣嶇疆涓婁笉鏀墮泦浠諱綍鐗岋級銆?

    鎴戜滑鍙互榪欐牱鏉ョ悊瑙e熀鎺掗珮鏁堢殑鏈川鍘熷洜錛氬亣璁懼墠i寮犵墝閮藉凡緇忔斁鍒頒簡瀹冧滑瀵瑰簲鐨勪綅緗笂錛岀i+1寮犵墝鏀懼嚭鍘葷殑鏃跺欙紝瀹為檯涓婂氨鐩稿綋浜?span lang=EN-US>“涓涓嬪瓙灝辯‘绔嬩簡瀹冨拰鍓?span lang=EN-US>i寮犵墝鐨勫ぇ灝忓叧緋伙紝鐢?span lang=EN-US>O(1)鐨勬搷浣滃氨灝嗚繖寮犵墝姝g‘鍦版彃鍏ュ埌浜嗗墠i寮犵墝涓殑姝g‘浣嶇疆涓婏紝榪欎釜鏁堟灉灝辯浉褰撲簬鎻掑叆鎺掑簭鐨勭i杞師鏈渶瑕佹瘮杈?span lang=EN-US>O(i)嬈$殑錛岀幇鍦ㄥ彧闇瑕?span lang=EN-US>O(1)浜嗐?

    浣嗘槸錛屼負浠涔堝熀鎺掕兘澶熻揪鍒拌繖涓晥鏋滃憿錛熶笂闈㈠彧鏄В閲婁簡榪囩▼錛岃В閲婁簡榪囩▼涓嶄唬琛ㄨВ閲婁簡鏈川銆?

    褰?span lang=EN-US>i寮犵墝鏀懼埌浣嶄箣鍚庯紝鏀劇疆絎?span lang=EN-US>i+1寮犵墝鐨勬椂鍊欐湁澶氬皯縐嶅彲鑳芥э紵澶х害i+1縐嶏紝鍥犱負鍓?span lang=EN-US>i寮犵墝灝?span lang=EN-US>13涓綅緗垎鍓叉垚浜?span lang=EN-US>i+1涓尯闂?span lang=EN-US>鈥斺?/span>絎?span lang=EN-US>i+1寮犵墝鍙互钀藉湪浠繪剰涓涓尯闂淬傛墍浠ユ斁緗i+1寮犵墝灝卞ソ姣旀槸璇㈤棶榪欐牱涓涓棶棰橈細榪欏紶鐗岃惤鍦ㄥ摢涓尯闂村憿錛?span lang=EN-US>”鑰岃繖涓棶棰樼殑絳旀鏈?span lang=EN-US>i+1縐嶅彲鑳芥э紵鎵浠ュ畠?yōu)灏嗗墿涓嬫潵鐨勫彲鑳芥у潎鍒嗘垚浜?span lang=EN-US>i+1浠斤紙鎹㈠彞璇濊錛岀爫鎺変簡i/i+1鐨勫彲鑳芥э紒錛夈傚啀鐪嬬湅鍩轟簬姣旇緝鐨勬帓搴忓惂錛氱敱浜庢瘡嬈℃瘮杈冨彧鏈変袱縐嶇粨鏋滐紝鎵浠ユ渶澶氬彧鑳藉皢鍓╀笅鐨勫彲鑳芥х爫鎺変竴鍗娿?

    榪欏氨鏄負浠涔堝熀鎺掕蹇緱澶氥傝屾墍鏈夊熀浜庢瘮杈冪殑鎺掑簭閮介冭劚涓嶄簡NlogN鐨勫鍛姐?

 

    4. 淇℃伅璁猴紒淇℃伅璁猴紵

    鏈潵鍛紝MacKay鍐欓偅綃囨枃绔犳槸鎯崇敤淇℃伅璁烘潵瑙i噴涓轟粈涔堝爢鎺掓參錛屼互鍙婁負浠涔堝揩鎺掍篃鎱㈢殑銆?span lang=EN-US>MacKay鍦ㄤ粬鐨勬枃绔犱腑鐨勮В閲婃槸錛屽彧鏈夋彁鍑烘瘡縐嶇瓟妗堢殑姒傜巼閮藉潎絳夌殑闂錛屾墠鑳借幏寰楁渶澶т俊鎭噺銆傜劧鑰岋紝浠旂粏涓鎯籌紝鍏跺疄榪欓噷淇℃伅璁哄茍涓嶆槸鍥狅紝鑰屾槸鏋溿傝繖閲屼笉闇瑕佺敤淇℃伅璁哄氨瀹屽叏鑳藉瑙i噴錛岃屼笖鏇存槑鐧姐備俊鎭鍙槸瀵硅繖涓В閲婄殑涓涓艦寮忓寲銆傚綋鐒訛紝淇℃伅璁哄湪鍏跺畠鍦版柟榪樻槸鏈夊簲鐢ㄧ殑銆備絾榪欓噷鍏跺疄鐢ㄤ笉鐫淇℃伅璁鴻繖涔堥噸閲忕駭鐨勪笢瑗匡紙涔熻鍏蜂綋璁$畻涓浜涙暟鎹殑鏃跺欐槸闇瑕佺殑錛夛紝鑰屾槸鍙渶瑕佷竴縐嶇湅闂鐨勬湰璐ㄨ瑙掞細灝嗘帓搴忛棶棰樼湅鎴愬拰鐚滄暟瀛椾竴鏍鳳紝鏄氳繃闂棶棰樻潵緙╁皬/鎺掗櫎錛?span lang=EN-US>narrow down錛夌粨鏋滅殑鍙兘鎬у尯闂達紝榪欐牱涓鏉ワ紝灝變細鍙戠幇錛?span lang=EN-US>“鏈濂界殑闂灝辨槸閭d簺鑳藉鍧囧垎鎵鏈夊彲鑳芥х殑闂錛屽洜涓洪偅鏍風(fēng)殑璇濅笉綆¢棶棰樼殑絳旀濡備綍錛岄兘鑳芥帓闄ゆ帀k-1/k錛?span lang=EN-US>k涓洪棶棰樼殑絳旀鏈夊灝戠杈撳嚭鈥斺?/span>鐚滄暟瀛楅噷闈㈡槸2錛岀О鐞冮噷闈㈡槸3錛夌鍙兘鎬э紝鑰屼笉鍧囪 鐨勯棶棰樻諱細鏈変竴涓垨涓浜涚瓟妗堝垎鏀帓闄ゆ帀鐨勫彲鑳芥ц灝忎簬k-1/k銆備簬鏄瓥鐣ョ殑涓嬬晫灝辮鎷栫瘡浜嗐?

 

    5. 灝忕粨

    榪欑殑紜槸灝忕粨錛屽洜涓轟袱鐐癸細

    1. 榪欎釜闂鍙互鏈変俊鎭鐨勭悊璁鴻В閲婏紝鑰屼俊鎭鍒欐槸涓涓浉褰撳ぇ鐨勯鍩熶簡銆?span lang=EN-US>

    2. 鏂囦腑鎻愬埌鐨勮繖縐嶇湅闂鐨勮瑙掗櫎浜嗙敤浜庢帓搴忋佺О鐞冿紝榪樿兘澶熻繍鐢ㄥ埌鍝簺闂涓婏紙姣斿鎼滅儲錛夈?span lang=EN-US>

 

Update(06/13/2008) : 寰愬鍦ㄨ璁轟腑緇х畫鎻愬埌錛?span lang=EN-US>

    鍙﹀錛岃繖鍑犲ぉ鎴戦噸鏂版妸TAOCP 絎笁鍗?span lang=EN-US>(絎簩鐗?span lang=EN-US>)緲誨嚭鏉ョ湅浜嗙湅 Knuth 鎬庝箞璇磋繖涓棶棰樼殑, 鍙戠幇鐪熸槸鐗涘ぇ浜嗭細

    鍏堣鎬ц兘錛?

pp148, section 5.2.3 璇達細

When N = 1000, the approximate average runiing time on MIX are 160000u for heapsort 130000u for shellsort 80000u  for quicksort

    榪欓噷,  Knuth 鍚屽鍙戠幇涓鑸儏鍐典笅 heapsort 琛ㄧ幇寰堜笉濂?span lang=EN-US>. 浜庢槸錛屽湪涓嬫枃浠栧氨璇達紝涔犻18 (pp156, 闅懼害21)

(R.W.Floyd) During the selection phase of heapsort, the key K tends to be quite small, so that nearly all the comparisons in step H6 find K<K_j. Show how to modify the algorithm so that K is not compared with K_j in the main loop of the computation, thereby nearly cutting the average number of comparisons in half.

    絳旀閲岄潰鐨勬柟娉曞拰DMK鐨勬柟娉曟槸涓鏍風(fēng)殑銆?span lang=EN-US>(鎴戣寰?span lang=EN-US>DMK鏄湅浜嗚繖涓鏂囨垨鑰?span lang=EN-US>TAoCP鐨?span lang=EN-US>) 榪欓噷璇?span lang=EN-US> by half錛屽氨姝eソ鍜屽揩鎺掑樊涓嶅浜嗐?

    鍐嶈淇℃伅璁哄垎鏋愶細

    鍦?span lang=EN-US>5.3.1 (pp181) 楂樼埛鐖峰氨璇?span lang=EN-US>, “鎺掑簭闂鍙互鐪嬫垚鏄竴涓爲涓婄殑楦熷効鎺掓帓绔欑殑闂. (榪樼壒鍦扮敾浜嗕竴媯墊爲), 涓嬩竴孌靛氨璇?span lang=EN-US>, 鍏跺疄榪欎釜涔熸湁絳変環(huán)璇存硶, 灝辨槸淇℃伅璁?span lang=EN-US>, 鎴戜滑浠庣О鐞冮棶棰樿璧?span lang=EN-US>...”

   鐒跺悗鍚庨潰涓鐩磋淇℃伅璁哄拰鏈灝忔瘮杈冩帓搴?span lang=EN-US>...

   楂樼埛鐖風(fēng)湡涓嶆劎鏄楂樼殑錛屽洤rz..



婕傛紓 2008-11-21 19:07 鍙戣〃璇勮
]]>
浠涔堟槸綆楁硶錛屼負浠涔堥渶瑕佸綆楁硶錛屼互鍙婄畻娉曞鍒頒粈涔堢▼搴︼紙杞澆錛?/title><link>http://m.shnenglu.com/AutomateProgram/archive/2008/11/15/67002.html</link><dc:creator>婕傛紓</dc:creator><author>婕傛紓</author><pubDate>Sat, 15 Nov 2008 08:37:00 GMT</pubDate><guid>http://m.shnenglu.com/AutomateProgram/archive/2008/11/15/67002.html</guid><wfw:comment>http://m.shnenglu.com/AutomateProgram/comments/67002.html</wfw:comment><comments>http://m.shnenglu.com/AutomateProgram/archive/2008/11/15/67002.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/AutomateProgram/comments/commentRss/67002.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/AutomateProgram/services/trackbacks/67002.html</trackback:ping><description><![CDATA[<p align=left>        絎竴涓棶棰樻垜瑙夊緱鎴戞棤娉曠粰鍑哄畬緹庣殑絳旀錛岃繖閲屾悶绔炶禌鐨勭墰浜鴻洰澶氾紝涓嶅Θ璇磋浣撲細:D <o:p></o:p></p> <p>         鎴戜釜浜鴻寰楃畻娉曢噷闈㈡瀬澶т竴閮ㄥ垎鍐呭鏄浣曟湁鏁堝湴榪涜鎼滅儲錛岃繖閲岀殑"鏈夋晥"鍙互鍒嗕負錛氶伩鍏嶄笉蹇呰鐨勮綆楋紙濡侫*瀵昏礬浠ュ強鎵鏈夌殑鍚彂寮忓壀鏋濓級錛岀紦瀛橀噸澶嶈綆楋紙濡傛墍鏈?shy;鐨勫姩鎬佽鍒掞級銆傚綋鐒訛紝鐭ラ亾榪欎簺璺熷叿浣撶殑璁捐鍑轟竴涓畻娉曡嚦灝戣繕鏈夊崄涓囧叓鍗冮噷錛屽彧鑳借鏈変簡榪欎釜澶т綋鐨勬濊礬錛屽氨鍙互浠庤繖涓や釜瑙掑害鍘誨瑙嗘墜澶寸殑闂錛屽線寰鏄細鏈夊惎鍙戞剰涔?shy;鐨勭艦浜嗐傚浣曢伩鍏嶄笉蹇呰鐨勮綆楋紵涔熸湁寰堝 rules of thumb 鍙互閬靛驚錛屽鍚彂寮忓壀鏋濋噷闈㈠氨瑕佹眰鍘昏璁′竴涓渶浼樹笅鐣岋紝鑰屾渶涓鑸殑鎬濊礬鍒欐槸浣垮姴鐬呯瀰闂閲岄潰鏈変粈涔堟潯浠舵槸娌℃湁鍒╃敤鐨勶紝榪欎簺鏉′歡緇勫悎璧鋒潵鍙互寰楀嚭浠涔堟ц川錛屼篃璁告煇­涓ц川灝辮兘澶熻鍒╃敤鏉ュ噺鎺変竴澶у爢璁$畻錛岃嚦浜庡浣曚粠棰樼洰鏉′歡鎺ㄥ嚭鏈変環(huán)鍊肩殑鎬ц川錛屾湁涓や釜鍔炴硶錛屼竴鏄瘯閿欙紙鎯沖埌鐨勭粨璁洪兘緇欏啓鍑烘潵錛岄櫠鍝茶僵鍦?Solving Mathematical Problems 閲岄潰灝辨彁鍒拌繃榪欎釜鍔炴硶銆傦級錛涘彟涓涓柟鍚戝垯鏄剳琚嬮噷鎻g潃鎯寵瀹炵幇鐨勭洰鐨勫線鍙嶆柟鍚戝綊綰︺傚浣曠紦瀛橀噸澶嶈綆楋紵綆鍗曠殑鍔ㄦ佽鍒掗棶棰樺fibonacci鏁板垪璁$畻錛屽叾閲嶅­璁$畻鏄潪甯告槑鏄劇殑錛岃綆楃殑榪囩▼鏈韓灝辨寚鏄庝簡鍝簺璁$畻鏄噸澶嶇殑錛圓n 欏圭殑璁$畻鏄噸澶嶇殑錛夆斺斿綋鐒訛紝姝e鏃╁墠閭撳悓瀛﹀彂鐨勪竴涓鐩?lt;<a target=_blank>https://groups.google.com/group/pongba/browse_frm/thread/2ca1f2bda0c8...</a>>閲岄潰璇寸殑錛屽叾瀹瀎ibonacci鏁板垪璁$畻閲岄潰鐨勭嚎鎬у彉鎹㈡湰韜篃鏄湁閲嶅璁$畻鐨勨斺斿悗鑰呬究鏄洿闅愯斀鐨勯噸澶嶈綆椾簡錛屼竴涓?non-trivial 鐨勫姩鎬佽鍒掗棶棰樺線寰娑夊強鍒伴潪甯擱殣钄界殑閲嶅璁$畻錛屾垨鑰呮洿闅劇殑鏄紝浣犻亶鍘嗙粍鍚堢┖闂寸殑鏂瑰紡鍐沖畾浜嗕綘鎵鑳藉緙撳瓨鐨勯噸澶嶈綆楀埌搴曟湁澶氬皯錛屼篃璁告煇涓亶鍘嗘柟寮忎箣涓嬪氨娌℃湁鍔炴硶鍘?shy;緙撳瓨璁$畻銆傚綋鐒訛紝綆楁硶鐨勮寖鐣村叾瀹炴槸寰堝ぇ鐨勶紝綆楁硶鏄竴涓狝I-Complete 鐨勯棶棰橈紝鎵鏈夌殑 Problem-Solving 榪囩▼閮藉彲浠ュ彨鍋氱畻娉曘傚彧鏄湁寰堝瀹為檯褰撲腑鐨勭畻娉曚細鎺夊叆浠ヤ笂涓ょ被鑰屽凡銆?nbsp; </p> <p>    絎簩涓棶棰樻垜涓句竴涓緥瀛愶細涓嶅儚寰堝鐗涗漢鍦ㄩ珮涓拰鏈灝辯珵璧涘鐗屼竴鍫嗭紝鎴戠洿鍒板ぇ鍥涚殑鏃跺欒繕涓嶇煡閬撲粈涔堟槸鍔ㄦ佽鍒掞紝鍥犱負鏈鍥涘勾鎴戜竴鐩村彧瀵瑰簳灞傛妧鏈劅鍏磋叮錛屾渶鍠滄鐪?姣斿 Petzold 鐨勩婄紪鐮佺殑濂ョ銆嬪拰 Richter 鐨勩?NET 妗嗘灦紼嬪簭璁捐銆嬶紙浜嬪疄涓婅繖鏄垜鐪嬬殑絎竴鏈嫳鏂囧師鐗堜功錛夎繖綾諱功銆傜爺涓鐨勬椂鍊欑敱浜庢柟鍚戞槸鑷劧璇█澶勭悊錛岀湅鐨勭涓綃?paper 鏄?Rabiner 鐨? A Tutorial on Hidden Markov Models and Selected Applications in Speech <br>Recognition 銆侾aper 鐨勫唴瀹瑰掓槸瀹屽叏鑳藉鐞嗚В錛屼絾鏄悊瑙e叾瀹炲彧鏄涓姝ワ紝鎴戝彂鐜扮悊瑙d簡涔嬪悗寰堝揩灝卞繕鎺変簡錛岃繖灝辮鏄庣悊瑙e緱涓嶅娣卞埢銆傛瘮濡傞噷闈㈢殑 Viterbi 綆楁硶錛岃姳浜嗘椂闂村幓鐞嗚В錛屼絾鏄竴杞ご寰堝揩鍙堝繕鎺変簡銆備竴騫村悗鍥犱負鏈虹紭宸у悎錛屽綆楁硶鍙戠敓浜嗕竴孌電煭鏆傜殑鍏磋叮錛屽茍瀛︿範浜嗕竴浜涘熀紜鐨勭畻娉曪紝灝ゅ叾鏄畻娉曠殑鎬濇兂錛屽洜涓烘濇兂鏄湁絀?shy;鐨勶紝浣嗙畻娉曟槸鏃犵┓鐨勶紝灝ゅ叾鏄鐩槸鍋氫笉瀹岀殑銆備箣鍚庝竴孌墊椂闂達紝紕板閥鍙堥渶瑕佺炕涓緲婚┈鍙か妯″瀷錛屾悳鍑哄惔鍐涚殑鏁板涔嬬編浠ュ強閭g瘒 Paper 錛屽彂鐜?Viterbi 綆楁硶鍏跺疄灝辨槸鏈綆鍗曠殑涓綾誨姩鎬佽鍒掞紝鐢變簬瀵逛簬鍔ㄦ佽鍒掔殑鐞嗚В娣卞埢浜嗗緢澶氾紝鎵浠ュ浜?Viterbi 綆楁硶錛屽湪鑴戣閲岄潰璁頒綇鐨勪笉鍐嶆槸浠涔?Forward Variable/Backward Variable <br>涔嬬被鐨勬妧鏈粏鑺傦紝鑰屾槸瀹冪殑鏈川錛屼簬鏄究涓嶅啀瀹規(guī)槗蹇樻帀錛岃屽嵆渚垮繕鎺夛紝灝卞搴炲姞鑾辨墍璇達紝涔熷彲浠ラ潪甯歌繀閫熺殑灝嗙畻娉曠殑緇嗚妭鑷鏋勫緩鍑烘潵銆?<o:p></o:p></p> <p>       鍏跺疄鎴戠浉淇¤繖鏍風(fēng)殑渚嬪瓙鏄暟涓嶈儨鏁扮殑錛屾墍浠ユ垜榪欎釜鍙槸綆椾竴涓?Yet Another Example 錛岀敱浜庡鎴戞潵璇存瘮杈冪壒孌婏紝鎵浠ュ嵃璞¤緝涓烘繁鍒匯?<o:p></o:p></p> <p>        榪欎釜渚嬪瓙鏄叧浜?鐞嗚В"鐨勩傛湁鏃跺欑畻娉曚篃浼氶潪甯告湁鐢紝濡傛湁涓嬈″啓紼嬪簭鏃墮渶瑕佺敤鍒?LCS 鍜?Edit-Distance 錛堣繖鏍風(fēng)殑鏈轟細寰堝皯錛屼絾閬囧埌浜嗘椂濡傛灉涓嶇煡閬撴湁澶氶」寮忓鏉傚害鐨勭畻娉曞氨寰堟?zhèn)叉儴浜嗗Q夛紝鑰屽仛鏈哄櫒瀛︿範鍜屾暟鎹寲鎺樼殑鏇存槸灝戜笉浜嗕竴鍧ㄥ潹鐨勭畻娉曪紝濡傛灉鍏夋槸鐞嗚В鍒漢鐨勫仛娉曠劧鍚庡疄鐜?shy;鍑烘潵錛岄偅涔堝綆楁硶鐨勬濇兂鐨勬妸鎻℃湁鍔╀簬鐞嗚В鍜岃蹇嗭紱濡傛灉闇瑕佽嚜宸辮璁$畻娉曪紝閭e氨闇瑕佺畻娉曞熀紜鐭ヨ瘑鐨勮緟鍔╂墠琛屼簡銆傜粷澶у鏁頒漢搴旇灞炰簬鍓嶈呫?<o:p></o:p></p> <p>         瀛︿範鍒頒粈涔堢▼搴︼紵鎴戣寰楄浜虹兢鑰屽畾銆傚鏋滃仛搴曞眰寮鍙戙佸簲鐢ㄥ紑鍙戙佺郴緇熷紑鍙戯紝鍙鐭ラ亾涓涓ぇ姒傚氨鍙互浜嗭紝鐭ラ亾緇忓吀鐨勬暟鎹粨鏋勫拰綆楁硶娌℃湁浠諱綍鍥伴毦錛岃屼笖鍙嶆緇忓吀綆楁硶­閮芥湁鐜版垚鐨勫簱鍙敤銆傚浜庢湁鍏磋叮鍋氫竴鐐?research 娌捐竟鐨勪簨鎯呯殑浜猴紝鍒欓渶瑕佷簡瑙h繖浜涚畻娉曡儗鍚庣殑涓鑸ф濊礬鏄粈涔堬紝鍚﹀垯鏉ヤ竴涓壒瀹氱殑綆楁硶浣犲氨鐗瑰畾鐨勭悊瑙h蹇嗕竴涓嬶紝鑲畾涓嶇墷闈狅紝鑰屼笖嫻垂澶ц剳璧勬簮銆傚浜庢悶 real deal 鐨?original research 鐨勯偅灝遍渶瑕佸箍娉涚殑鐭ヨ瘑縐瘡浜嗭紝鍏夌煡閬撲竴鑸ф濊礬閮戒笉澶熴?<o:p></o:p></p> <p>        鍙︿竴鏂歸潰錛屾垜瑙夊緱瀛﹀畬浜嗙粡鍏哥畻娉曪紝娣卞埢鐞嗚В浜嗙畻娉曡儗鍚庣殑涓鑸ф濊礬涔嬪悗錛屽鏋滃啀榪涗竴姝ュ幓鐜╅鐩紝鍋氶搴撱傛晥鐩婂嵈涓嶆槸寰堝ぇ鐨勶紝鍥犱負鍒紓ㄤ簡鏄鐢ㄧ殑錛岀帺棰樼洰鍋氶搴撳氨­鏄繘涓姝ョ(鍒鑰屼笉鐢紙涓嶅幓瑙e喅瀹為檯闂錛岃兘澶熶駭鐢熷獎鍝嶅姏鐨勶紝鎴栫敓浜у姏鐨勯棶棰橈級銆傚疄闄呬笂鍋氫簡涓浜涢鐩箣鍚庡氨瀹屽叏娌″繀瑕佽繘涓姝ュ仛棰樼洰浜嗭紝鍥犱負鍋氭潵鍋氬幓錛屾嫾鐨勫熀鏈篃灝?shy;鏄皝鐨勭煡璇嗙Н绱錛堝璺錛夛紝璋佺殑鑰愬績澶э紙鑲嬌鍔插幓紓ㄤ竴閬撻鐩級錛涘疄闄呬笂璋佷篃涓嶆瘮璋佺錛屽埌鏈鍚庡尯鍒氨鍩烘湰涓婃樉闇插湪鐭ヨ瘑縐瘡鍜岃愬績涓婁簡銆傛墍浠ユ帴鐫鍋氾紝鍒涔熶笉浼氱(寰?shy;鏇撮攱鍒╋紝鏇翠綍鍐靛ぇ濂界殑鏃跺厜搴旇鍘誨仛鐐規(guī)湁鎰忎箟鐨勪簨鎯咃紙濡傛灉鏄負浜?fun 鑰屽仛棰樼殑錛岄偅涔堟湁鎰忎箟鐨勪簨鎯呭悓鏍蜂篃鍙互鏄?extremely fun錛夛紝姣斿鎴戣寰楁渶鍚稿紩浜轟篃鏈鏍規(guī)湰鐨勯棶棰樺氨鏄漢宸ユ櫤鑳介棶棰橈紙鎯蟲兂鐪嬶紝浜鴻剳鏄笘鐣屼笂榪勪粖涓烘鎵鐭ユ渶涓哄鏉傜殑緇撴瀯錛岃繖涓粨鏋勫叿澶囦簡璁よ瘑鑷劧鐣?瑙勫緥"鐨勮兘鍔涳紝鍏?shy;澶囦簡璁よ瘑"鑷垜"鐨勮兘鍔涳紝鍏峰浜嗗綊綰沖拰婕旂粠鎺ㄧ悊鐨勮兘鍔涳紝綾繪瘮鐨勮兘鍔涳紝鍏峰浜嗛毦浠ョ疆淇$殑鍚彂寮忔悳绱㈣兘鍔涳紝鍏峰瀹岀編鐨勬ā寮忚瘑鍒兘鍔涳紝鑰屾牴鎹繘鍖栬鐨勮鐐癸紝榪欐牱鐨勭粨鏋?shy;灞呯劧浠呬粎鏄氳繃鍙樺紓鈥斺旂瓫閫夊緱鏉ョ殑錛屽鏋滅湡鏈変笂甯濓紝閭d箞鍒╃敤涓婂笣璧嬩簣鎴戜滑鐨勫ぇ鑴戝幓鐮磋В涓婂笣榪欎釜欏剁駭鐗涢肩▼搴忓憳鍐欑殑紼嬪簭鈥斺斾漢鑴戠殑縐樺瘑錛岃繕鏈夋瘮榪欐洿甯﹀姴鍎跨殑浜嬫儏鍚?shy;錛燂級錛屾墍浠ユ垜瑙夊緱鏈夐偅涔堝ソ鐨勫熀紜鐨勭墰浜猴紝涓嶅幓鐩撮潰鐪熸 fundamental 鐨?problems 錛屽氨鍙儨浜嗭紝欏葷煡棰樼洰鏄案榪滃仛涓嶅畬鐨勶紝涓涓叕鐞嗙郴緇熺殑瀹氱悊涔熸槸姘歌繙鎺ㄥ涓嶅畬鐨勶紝姘歌繙鍙互璁捐鍑洪鐩潵緇欎綘鍋氾紝浣嗘槸鐪熸鐨勯棶棰樺叾瀹炲彧鏈変竴涓傚鏋滅┓涓句笉浜嗕笘鐣屼笂鎵­鏈夌殑闂錛岃嚦灝戝彲浠ヤ婦鍑洪偅浜涙湁瓚c佹湁鎰忎箟鐨勯棶棰?) <o:p></o:p></p> <p>-- <br>鍒樻湭楣?pongba) <br>Blog|C++鐨勭綏嫻 <br><a target=_blank>http://blog.csdn.net/pongba</a> <o:p></o:p></p> <p align=left><o:p> </o:p></p> <p> </p> <img src ="http://m.shnenglu.com/AutomateProgram/aggbug/67002.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/AutomateProgram/" target="_blank">婕傛紓</a> 2008-11-15 16:37 <a href="http://m.shnenglu.com/AutomateProgram/archive/2008/11/15/67002.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <a href="http://m.shnenglu.com/">青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品</a> <div style="position:fixed;left:-9000px;top:-9000px;"><font id="pjuwb"></font><button id="pjuwb"><pre id="pjuwb"></pre></button><sub id="pjuwb"></sub><tbody id="pjuwb"><var id="pjuwb"><address id="pjuwb"></address></var></tbody><listing id="pjuwb"><label id="pjuwb"><strong id="pjuwb"></strong></label></listing><wbr id="pjuwb"><small id="pjuwb"><tbody id="pjuwb"></tbody></small></wbr><ins id="pjuwb"><xmp id="pjuwb"></xmp></ins><style id="pjuwb"></style><label id="pjuwb"><em id="pjuwb"><li id="pjuwb"></li></em></label><samp id="pjuwb"></samp><menu id="pjuwb"><input id="pjuwb"></input></menu><pre id="pjuwb"><tbody id="pjuwb"><tfoot id="pjuwb"><button id="pjuwb"></button></tfoot></tbody></pre><form id="pjuwb"></form><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"><sup id="pjuwb"></sup></label></style></i><li id="pjuwb"><table id="pjuwb"><abbr id="pjuwb"></abbr></table></li><video id="pjuwb"></video><dfn id="pjuwb"></dfn><progress id="pjuwb"></progress><strong id="pjuwb"></strong><mark id="pjuwb"></mark><em id="pjuwb"></em><tbody id="pjuwb"><p id="pjuwb"><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike></p></tbody><option id="pjuwb"></option><strike id="pjuwb"></strike><u id="pjuwb"></u><td id="pjuwb"><center id="pjuwb"><tr id="pjuwb"></tr></center></td><em id="pjuwb"><mark id="pjuwb"><em id="pjuwb"><tt id="pjuwb"></tt></em></mark></em><strong id="pjuwb"></strong><wbr id="pjuwb"></wbr><s id="pjuwb"></s><strong id="pjuwb"></strong><legend id="pjuwb"></legend><nav id="pjuwb"></nav><dl id="pjuwb"><th id="pjuwb"><dl id="pjuwb"></dl></th></dl><noframes id="pjuwb"><ins id="pjuwb"></ins></noframes><font id="pjuwb"></font><strike id="pjuwb"><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"></label></style></i></strike><output id="pjuwb"></output><thead id="pjuwb"><pre id="pjuwb"></pre></thead><source id="pjuwb"></source><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem><pre id="pjuwb"><span id="pjuwb"><pre id="pjuwb"><big id="pjuwb"></big></pre></span></pre><cite id="pjuwb"><fieldset id="pjuwb"><s id="pjuwb"><rt id="pjuwb"></rt></s></fieldset></cite><big id="pjuwb"><progress id="pjuwb"><big id="pjuwb"></big></progress></big><samp id="pjuwb"><delect id="pjuwb"></delect></samp><dl id="pjuwb"></dl><strike id="pjuwb"><nav id="pjuwb"><dl id="pjuwb"><strong id="pjuwb"></strong></dl></nav></strike><tbody id="pjuwb"><b id="pjuwb"><optgroup id="pjuwb"><rp id="pjuwb"></rp></optgroup></b></tbody><em id="pjuwb"></em><xmp id="pjuwb"><blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote></xmp> <i id="pjuwb"><abbr id="pjuwb"><i id="pjuwb"><abbr id="pjuwb"></abbr></i></abbr></i><center id="pjuwb"><acronym id="pjuwb"><center id="pjuwb"></center></acronym></center><pre id="pjuwb"></pre><ul id="pjuwb"><thead id="pjuwb"></thead></ul><blockquote id="pjuwb"><pre id="pjuwb"><sup id="pjuwb"></sup></pre></blockquote><acronym id="pjuwb"></acronym><big id="pjuwb"><s id="pjuwb"></s></big><th id="pjuwb"></th><th id="pjuwb"></th><tbody id="pjuwb"></tbody><thead id="pjuwb"><strike id="pjuwb"></strike></thead><th id="pjuwb"><dl id="pjuwb"><wbr id="pjuwb"></wbr></dl></th><dl id="pjuwb"><strong id="pjuwb"></strong></dl><abbr id="pjuwb"><noframes id="pjuwb"><noscript id="pjuwb"></noscript></noframes></abbr><td id="pjuwb"><ol id="pjuwb"></ol></td><li id="pjuwb"><noscript id="pjuwb"><abbr id="pjuwb"></abbr></noscript></li><small id="pjuwb"><bdo id="pjuwb"><nav id="pjuwb"></nav></bdo></small><style id="pjuwb"></style><optgroup id="pjuwb"><table id="pjuwb"></table></optgroup><center id="pjuwb"><tr id="pjuwb"><dfn id="pjuwb"></dfn></tr></center><th id="pjuwb"></th><u id="pjuwb"></u><tfoot id="pjuwb"><legend id="pjuwb"><i id="pjuwb"></i></legend></tfoot><mark id="pjuwb"></mark><meter id="pjuwb"></meter><nav id="pjuwb"></nav><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><nobr id="pjuwb"></nobr><sub id="pjuwb"><th id="pjuwb"><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem></th></sub><thead id="pjuwb"><sub id="pjuwb"></sub></thead><ul id="pjuwb"><address id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></address></ul><dfn id="pjuwb"></dfn><pre id="pjuwb"></pre><input id="pjuwb"><cite id="pjuwb"><fieldset id="pjuwb"></fieldset></cite></input><u id="pjuwb"><form id="pjuwb"><u id="pjuwb"></u></form></u><kbd id="pjuwb"><em id="pjuwb"><mark id="pjuwb"></mark></em></kbd><tr id="pjuwb"></tr><del id="pjuwb"><form id="pjuwb"><address id="pjuwb"></address></form></del><tfoot id="pjuwb"><legend id="pjuwb"><ol id="pjuwb"><dl id="pjuwb"></dl></ol></legend></tfoot><menu id="pjuwb"><nobr id="pjuwb"><th id="pjuwb"><nobr id="pjuwb"></nobr></th></nobr></menu><fieldset id="pjuwb"></fieldset><pre id="pjuwb"><blockquote id="pjuwb"><samp id="pjuwb"></samp></blockquote></pre><xmp id="pjuwb"><sup id="pjuwb"><pre id="pjuwb"></pre></sup></xmp><span id="pjuwb"><progress id="pjuwb"></progress></span><font id="pjuwb"></font><var id="pjuwb"><abbr id="pjuwb"></abbr></var><strong id="pjuwb"><label id="pjuwb"><i id="pjuwb"><legend id="pjuwb"></legend></i></label></strong><tr id="pjuwb"><em id="pjuwb"><em id="pjuwb"><output id="pjuwb"></output></em></em></tr><thead id="pjuwb"><strike id="pjuwb"></strike></thead> <acronym id="pjuwb"></acronym><i id="pjuwb"></i><tt id="pjuwb"></tt><rt id="pjuwb"><source id="pjuwb"><rt id="pjuwb"></rt></source></rt><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike><del id="pjuwb"></del><font id="pjuwb"><output id="pjuwb"><ins id="pjuwb"><output id="pjuwb"></output></ins></output></font><kbd id="pjuwb"><tr id="pjuwb"><kbd id="pjuwb"></kbd></tr></kbd><pre id="pjuwb"><sup id="pjuwb"><delect id="pjuwb"><samp id="pjuwb"></samp></delect></sup></pre><samp id="pjuwb"></samp><track id="pjuwb"></track><tr id="pjuwb"></tr><center id="pjuwb"></center><fieldset id="pjuwb"></fieldset><i id="pjuwb"></i><td id="pjuwb"></td><rt id="pjuwb"></rt><object id="pjuwb"></object><pre id="pjuwb"><progress id="pjuwb"><sub id="pjuwb"><thead id="pjuwb"></thead></sub></progress></pre><kbd id="pjuwb"><tr id="pjuwb"><option id="pjuwb"></option></tr></kbd><output id="pjuwb"><ins id="pjuwb"></ins></output><ol id="pjuwb"></ol><source id="pjuwb"></source><strong id="pjuwb"></strong><ruby id="pjuwb"></ruby><sub id="pjuwb"><meter id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></meter></sub><pre id="pjuwb"></pre><center id="pjuwb"></center><tr id="pjuwb"><tbody id="pjuwb"><xmp id="pjuwb"><dd id="pjuwb"></dd></xmp></tbody></tr><video id="pjuwb"></video><pre id="pjuwb"></pre><form id="pjuwb"><optgroup id="pjuwb"></optgroup></form><samp id="pjuwb"></samp><kbd id="pjuwb"></kbd><strong id="pjuwb"><option id="pjuwb"></option></strong><object id="pjuwb"></object><abbr id="pjuwb"><noframes id="pjuwb"><abbr id="pjuwb"></abbr></noframes></abbr><ul id="pjuwb"><del id="pjuwb"><button id="pjuwb"><pre id="pjuwb"></pre></button></del></ul><abbr id="pjuwb"></abbr><strong id="pjuwb"><code id="pjuwb"><strong id="pjuwb"></strong></code></strong><option id="pjuwb"></option><optgroup id="pjuwb"><bdo id="pjuwb"><code id="pjuwb"></code></bdo></optgroup><mark id="pjuwb"><em id="pjuwb"><font id="pjuwb"></font></em></mark><acronym id="pjuwb"><code id="pjuwb"></code></acronym><dl id="pjuwb"></dl><em id="pjuwb"></em><object id="pjuwb"><input id="pjuwb"><object id="pjuwb"></object></input></object><output id="pjuwb"><dd id="pjuwb"></dd></output><option id="pjuwb"><button id="pjuwb"><option id="pjuwb"></option></button></option><small id="pjuwb"></small></div> <a href="http://551731.com" target="_blank">国产精品一区二区黑丝</a>| <a href="http://1181318.com" target="_blank">亚洲欧美日本在线</a>| <a href="http://www333393.com" target="_blank">欧美激情视频免费观看</a>| <a href="http://dsjgqc.com" target="_blank">国产亚洲欧美一区</a>| <a href="http://05ec.com" target="_blank">亚洲欧美久久久</a>| <a href="http://555134.com" target="_blank">欧美一区二区三区喷汁尤物</a>| <a href="http://456kp.com" target="_blank">国产日韩欧美综合在线</a>| <a href="http://327099.com" target="_blank">性欧美video另类hd性玩具</a>| <a href="http://6688se.com" target="_blank">久久久亚洲综合</a>| <a href="http://bjzgmember.com" target="_blank">亚洲国产精品黑人久久久</a>| <a href="http://mathck.com" target="_blank">欧美国产精品日韩</a>| <a href="http://zisxks.com" target="_blank">亚洲午夜精品久久久久久app</a>| <a href="http://4466777.com" target="_blank">亚洲欧美在线高清</a>| <a href="http://6faa.com" target="_blank">亚洲三级观看</a>| <a href="http://www-293456.com" target="_blank">国产精品综合网站</a>| <a href="http://jizzdo.com" target="_blank">国产精品免费在线</a>| <a href="http://belerbb.com" target="_blank">欧美不卡视频</a>| <a href="http://555888666.com" target="_blank">欧美一区二粉嫩精品国产一线天</a>| <a href="http://lorgou.com" target="_blank">免费91麻豆精品国产自产在线观看 </a>| <a href="http://777777hd.com" target="_blank">一区二区三区国产精品</a>| <a href="http://qdssqt.com" target="_blank">久久精品欧美日韩</a>| <a href="http://pabjzz.com" target="_blank">亚洲精品欧美专区</a>| <a href="http://irongxun.com" target="_blank">日韩午夜免费视频</a>| <a href="http://www47777.com" target="_blank">国产午夜久久</a>| <a href="http://huayoue.com" target="_blank">亚洲成人中文</a>| <a href="http://977mo.com" target="_blank">精品动漫3d一区二区三区</a>| <a href="http://0755hqr.com" target="_blank">欧美日本一区</a>| <a href="http://jj8518.com" target="_blank">两个人的视频www国产精品</a>| <a href="http://www-xj788.com" target="_blank">亚洲人体影院</a>| <a href="http://www-273111.com" target="_blank">欧美日韩成人综合</a>| <a href="http://aidingcai.com" target="_blank">欧美一区二区精品久久911</a>| <a href="http://www92y.com" target="_blank">久久欧美肥婆一二区</a>| <a href="http://91x8.com" target="_blank">一区二区三区四区国产</a>| <a href="http://www033459.com" target="_blank">久久riav二区三区</a>| <a href="http://777777hb.com" target="_blank">亚洲一区国产视频</a>| <a href="http://baluka-tw.com" target="_blank">亚洲精品视频在线观看免费</a>| <a href="http://kasimcoal.com" target="_blank">久久高清免费观看</a>| <a href="http://wwwq4yy.com" target="_blank">西瓜成人精品人成网站</a>| <a href="http://329aaa.com" target="_blank">日韩视频精品在线观看</a>| <a href="http://jx963.com" target="_blank">亚洲国产精品精华液2区45</a>| <a href="http://sao320.com" target="_blank">一区二区三区四区国产精品</a>| <a href="http://www442222.com" target="_blank">亚洲美女免费精品视频在线观看</a>| <a href="http://clgtzz.com" target="_blank">欧美一进一出视频</a>| <a href="http://5s5s5s.com" target="_blank">亚洲国产成人不卡</a>| <a href="http://862323.com" target="_blank">久久色中文字幕</a>| <a href="http://wlhtgj.com" target="_blank">一区二区欧美日韩</a>| <a href="http://4480vv.com" target="_blank">欧美黄在线观看</a>| <a href="http://tv-miya188.com" target="_blank">韩国三级电影久久久久久</a>| <a href="http://666888123.com" target="_blank">韩日精品中文字幕</a>| <a href="http://by777131.com" target="_blank">一区二区三区高清在线 </a>| <a href="http://www433444.com" target="_blank">亚洲国产综合在线</a>| <a href="http://456316.com" target="_blank">欧美激情视频在线免费观看 欧美视频免费一 </a>| <a href="http://123lifenet.com" target="_blank">国产精品久久久久久久久借妻 </a>| <a href="http://wwwmm7777.com" target="_blank">国产一区二区看久久</a>| <a href="http://avse69.com" target="_blank">亚洲午夜电影网</a>| <a href="http://www5123ri.com" target="_blank">一区二区三区日韩精品</a>| <a href="http://xaipad.com" target="_blank">老巨人导航500精品</a>| <a href="http://o10669.com" target="_blank">欧美大秀在线观看</a>| <a href="http://lyminghang.com" target="_blank">欧美大片免费观看</a>| <a href="http://7782y.com" target="_blank">性感少妇一区</a>| <a href="http://shno1steel.com" target="_blank">国产精品一区二区在线观看</a>| <a href="http://essuee.com" target="_blank">亚洲私人影吧</a>| <a href="http://5254f.com" target="_blank">久久久久国内</a>| <a href="http://111491.com" target="_blank">欧美二区在线播放</a>| <a href="http://aqdav81.com" target="_blank">欧美中文字幕久久</a>| <a href="http://344230.com" target="_blank">亚洲一区精品在线</a>| <a href="http://aijiashe.com" target="_blank">亚洲激情视频在线播放</a>| <a href="http://www13256.com" target="_blank">精品91视频</a>| <a href="http://taoseav8.com" target="_blank">欧美中文在线字幕</a>| <a href="http://www92444.com" target="_blank">午夜精品久久久久影视</a>| <a href="http://343119.com" target="_blank">噜噜噜91成人网</a>| <a href="http://wanshunpu.com" target="_blank">欧美激情第1页</a>| <a href="http://www11108b.com" target="_blank">亚洲人成7777</a>| <a href="http://1332233.com" target="_blank">亚洲伊人伊色伊影伊综合网</a>| <a href="http://zyjxyx.com" target="_blank">亚洲精品美女久久7777777</a>| <a href="http://qq6699.com" target="_blank">欧美高清视频www夜色资源网</a>| <a href="http://maomi54.com" target="_blank">亚洲精品一区中文</a>| <a href="http://www9ckk1.com" target="_blank">日韩网站在线观看</a>| <a href="http://88xjj.com" target="_blank">亚洲一区二区三区中文字幕</a>| <a href="http://223tt.com" target="_blank">欧美性做爰毛片</a>| <a href="http://xshgwy.com" target="_blank">在线电影国产精品</a>| <a href="http://rainbowbpm.com" target="_blank">一区二区欧美激情</a>| <a href="http://842332.com" target="_blank">9色精品在线</a>| <a href="http://caoav8.com" target="_blank">你懂的成人av</a>| <a href="http://626tw.com" target="_blank">国产一区二区三区精品欧美日韩一区二区三区 </a>| <a href="http://5cok.com" target="_blank">亚洲在线视频</a>| <a href="http://wawabt.com" target="_blank">欧美有码视频</a>| <a href="http://k-dchina.com" target="_blank">亚洲精品美女在线观看</a>| <a href="http://21bridal.com" target="_blank">99国产一区</a>| <a href="http://979695.com" target="_blank">激情久久五月</a>| <a href="http://wyy66.com" target="_blank">一本久道久久久</a>| <a href="http://weixiao668.com" target="_blank">国产一区在线播放</a>| <a href="http://798200.com" target="_blank">99re这里只有精品6</a>| <a href="http://4534com.com" target="_blank">99精品热视频只有精品10</a>| <a href="http://cp88966.com" target="_blank">国产精品美女一区二区</a>| <a href="http://5138555.com" target="_blank">美国十次了思思久久精品导航</a>| <a href="http://cgnwp.com" target="_blank">欧美激情视频网站</a>| <a href="http://域名" target="_blank">国产一区深夜福利</a>| <a href="http://www666se.com" target="_blank">欧美成人一区二区三区</a>| <a href="http://www9797abc.com" target="_blank">欧美日韩1080p</a>| <a href="http://www497171c.com" target="_blank">久久精品动漫</a>| <a href="http://maomi54.com" target="_blank">欧美日韩国产综合久久</a>| <a href="http://www-4157.com" target="_blank">久久xxxx精品视频</a>| <a href="http://eee104.com" target="_blank">欧美激情亚洲激情</a>| <a href="http://794238.com" target="_blank">久久精品国产精品亚洲精品</a>| <a href="http://t3gg.com" target="_blank">欧美精品在线观看91</a>| <a href="http://138128.com" target="_blank">久久国产欧美日韩精品</a>| <a href="http://balqueen.com" target="_blank">欧美激情精品久久久久久免费印度</a>| <a href="http://cz-sensor.com" target="_blank">亚洲网在线观看</a>| <a href="http://096577.com" target="_blank">久久精品视频99</a>| <a href="http://6666345.com" target="_blank">国产人久久人人人人爽</a>| <a href="http://www17727.com" target="_blank">一卡二卡3卡四卡高清精品视频</a>| <a href="http://555888666.com" target="_blank">久久久久国产精品www</a>| <a href="http://895658.com" target="_blank">嫩草成人www欧美</a>| <a href="http://tt5125.com" target="_blank">欧美在线观看日本一区</a>| <a href="http://160160160.com" target="_blank">欧美ed2k</a>| <a href="http://aimashe.com" target="_blank">久久久精品国产免大香伊</a>| <a href="http://obatshaka.com" target="_blank">欧美日韩不卡</a>| <a href="http://345kt.com" target="_blank">欧美国产精品日韩</a>| <a href="http://bauyu121.com" target="_blank">国模一区二区三区</a>| <a href="http://456888com.com" target="_blank">一区二区三区国产精华</a>| <a href="http://1323666.com" target="_blank">久久琪琪电影院</a>| <a href="http://ewaygou.com" target="_blank">亚洲一区免费</a>| <a href="http://aijiaoji.com" target="_blank">亚洲美女av在线播放</a>| <a href="http://fcponteggi.com" target="_blank">久久色在线观看</a>| <a href="http://666777v3.com" target="_blank">欧美影视一区</a>| <a href="http://www-438686.com" target="_blank">国产精品捆绑调教</a>| <a href="http://ykk7.com" target="_blank">一区二区三区日韩在线观看</a>| <a href="http://www35211.com" target="_blank">亚洲欧洲偷拍精品</a>| <a href="http://njhuike.com" target="_blank">久久久久一区二区三区四区</a>| <a href="http://pear9.com" target="_blank">红杏aⅴ成人免费视频</a>| <a href="http://755795.com" target="_blank">一本色道久久综合狠狠躁篇的优点 </a>| <a href="http://ww4477.com" target="_blank">亚洲第一精品福利</a>| <a href="http://56lin.com" target="_blank">欧美淫片网站</a>| <a href="http://77777gao.com" target="_blank">久久免费视频网</a>| <a href="http://www249aaa.com" target="_blank">激情伊人五月天久久综合</a>| <a href="http://www-067.com" target="_blank">午夜精品影院</a>| <a href="http://wawabt.com" target="_blank">久久精品国产视频</a>| <a href="http://yw-95588.com" target="_blank">国产日产精品一区二区三区四区的观看方式 </a>| <a href="http://www-00468.com" target="_blank">玖玖在线精品</a>| <a href="http://921367.com" target="_blank">在线观看视频一区二区</a>| <a href="http://wwwlywbb.com" target="_blank">久久影音先锋</a>| <a href="http://cibocentre.com" target="_blank">亚洲第一偷拍</a>| <a href="http://335848.com" target="_blank">亚洲人屁股眼子交8</a>| <a href="http://simextec.com" target="_blank">美女尤物久久精品</a>| <a href="http://www-438686.com" target="_blank">亚洲国产精品悠悠久久琪琪</a>| <a href="http://www-132377.com" target="_blank">亚洲品质自拍</a>| <a href="http://080973.com" target="_blank">欧美黄色小视频</a>| <a href="http://tp112.com" target="_blank">日韩一级大片在线</a>| <a href="http://cnm24.com" target="_blank">午夜精品一区二区三区在线 </a>| <a href="http://wltaste.com" target="_blank">欧美国产亚洲视频</a>| <a href="http://atmub.com" target="_blank">亚洲精品美女在线观看播放</a>| <a href="http://zhipiao998.com" target="_blank">a91a精品视频在线观看</a>| <a href="http://free18teen.com" target="_blank">欧美日韩国产色综合一二三四</a>| <a href="http://www11108b.com" target="_blank">99精品视频免费全部在线</a>| <a href="http://4884888.com" target="_blank">亚洲欧美在线视频观看</a>| <a href="http://66669801.com" target="_blank">国产一区二区在线免费观看</a>| <a href="http://kk1xx-com.com" target="_blank">久久久亚洲高清</a>| <a href="http://zuan3344.com" target="_blank">亚洲人永久免费</a>| <a href="http://hbshwx.com" target="_blank">欧美一区激情视频在线观看</a>| <a href="http://660507jj.com" target="_blank">国产一区欧美</a>| <a href="http://388123cc.com" target="_blank">欧美精品啪啪</a>| <a href="http://16kkkk.com" target="_blank">国产精品99久久久久久白浆小说</a>| <a href="http://junhuatesu.com" target="_blank">国产一区二区三区黄</a>| <a href="http://jqnyc.com" target="_blank">久久久久久综合网天天</a>| <a href="http://yeepey.com" target="_blank">亚洲国产色一区</a>| <a href="http://www672hh.com" target="_blank">午夜欧美理论片</a>| <a href="http://maiiyou.com" target="_blank">亚洲第一中文字幕</a>| <a href="http://alex-bruni.com" target="_blank">欧美三级在线视频</a>| <a href="http://456kp.com" target="_blank">老鸭窝毛片一区二区三区</a>| <a href="http://hznaja.com" target="_blank">亚洲高清久久</a>| <a href="http://xaxkizlar.com" target="_blank">欧美三级免费</a>| <a href="http://18loutv.com" target="_blank">久久久精品国产99久久精品芒果</a>| <a href="http://kkwwxx.com" target="_blank">欧美高清成人</a>| <a href="http://zyjzz.com" target="_blank">午夜在线一区二区</a>| <a href="http://www4848xx.com" target="_blank">亚洲第一视频网站</a>| <a href="http://y66776.com" target="_blank">欧美三区美女</a>| <a href="http://888nei.com" target="_blank">久久夜色精品国产</a>| <a href="http://naturalgiftfashion.com" target="_blank">欧美中文字幕在线</a>| <a href="http://7v51.com" target="_blank">欧美一级一区</a>| <a href="http://wwwzmcc1.com" target="_blank">亚洲黄色在线观看</a>| <a href="http://44ie.com" target="_blank">国产乱码精品1区2区3区</a>| <a href="http://tareandshare.com" target="_blank">久久综合色播五月</a>| <a href="http://857sds.com" target="_blank">亚洲午夜久久久</a>| <a href="http://kpd034.com" target="_blank">亚洲国产精品久久</a>| <a href="http://esdzu.com" target="_blank">久久精品视频在线</a>| <a href="http://tongrenyaoye.com" target="_blank">国产精品99久久久久久久久久久久 </a>| <a href="http://nc04.com" target="_blank">欧美电影美腿模特1979在线看</a>| <a href="http://7770790.com" target="_blank">亚洲一区二区欧美</a>| <a href="http://7343888.com" target="_blank">欧美大片一区二区三区</a>| <a href="http://llamkos.com" target="_blank">久久激情视频久久</a>| <a href="http://jafzjz.com" target="_blank">亚洲无线一线二线三线区别av</a>| <a href="http://mytopvogue.com" target="_blank">尤物精品国产第一福利三区</a>| <a href="http://www72227.com" target="_blank">国产精品美女久久久浪潮软件</a>| <a href="http://02326a.com" target="_blank">欧美成ee人免费视频</a>| <a href="http://13789a.com" target="_blank">久久精品噜噜噜成人av农村</a>| <a href="http://zzzz80.com" target="_blank">亚洲欧美日本视频在线观看</a>| <a href="http://4488269.com" target="_blank">日韩一区二区精品</a>| <a href="http://haomscq.com" target="_blank">亚洲精品在线观看视频</a>| <a href="http://aqdav037.com" target="_blank">亚洲国产精品成人va在线观看</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>