锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲免费观看高清在线观看
,亚洲美女啪啪,亚洲欧美日韩一区 http://m.shnenglu.com/softko/category/14124.html娣¤杽鍚嶅埄,淇韓鍏繪?/description>zh-cn Wed, 22 Jun 2011 09:08:07 GMT Wed, 22 Jun 2011 09:08:07 GMT 60 鍚勭鎺掑簭綆楁硶浠嬬粛 http://m.shnenglu.com/softko/archive/2011/06/17/148828.htmleircQ eircQ Fri, 17 Jun 2011 00:09:00 GMT http://m.shnenglu.com/softko/archive/2011/06/17/148828.html http://m.shnenglu.com/softko/comments/148828.html http://m.shnenglu.com/softko/archive/2011/06/17/148828.html#Feedback 0 http://m.shnenglu.com/softko/comments/commentRss/148828.html http://m.shnenglu.com/softko/services/trackbacks/148828.html 鎺掑簭綆楁硶鏄竴縐嶅熀鏈茍涓斿父鐢ㄧ殑綆楁硶銆傜敱浜庡疄闄呭伐浣滀腑澶勭悊鐨勬暟閲忓法澶э紝鎵浠ユ帓搴忕畻娉曞綆楁硶鏈韓鐨勯熷害瑕佹眰寰堥珮銆?br /> 鑰屼竴鑸垜浠墍璋撶殑綆楁硶鐨勬ц兘涓昏鏄寚綆楁硶鐨勫鏉傚害錛屼竴鑸敤O鏂規硶鏉ヨ〃紺恒傚湪鍚庨潰鎴戝皢緇欏嚭璇︾粏鐨勮鏄庛?br /> 瀵逛簬鎺掑簭鐨勭畻娉曟垜鎯沖厛鍋氫竴鐐圭畝鍗曠殑浠嬬粛錛屼篃鏄粰榪欑瘒鏂囩珷鐞嗕竴涓彁綰層?br /> 鎴戝皢鎸夌収綆楁硶鐨勫鏉傚害錛屼粠綆鍗曞埌闅炬潵鍒嗘瀽綆楁硶銆?br /> 絎竴閮ㄥ垎鏄畝鍗曟帓搴忕畻娉曪紝鍚庨潰浣犲皢鐪嬪埌浠栦滑鐨勫叡鍚岀偣鏄畻娉曞鏉傚害涓篛(N*N)錛堝洜涓烘病鏈変嬌鐢╳ord,鎵浠ユ棤娉曟墦鍑轟笂鏍囧拰涓嬫爣錛夈?br /> 絎簩閮ㄥ垎鏄珮綰ф帓搴忕畻娉曪紝澶嶆潅搴︿負O(Log2(N))銆傝繖閲屾垜浠彧浠嬬粛涓縐嶇畻娉曘傚彟澶栬繕鏈夊嚑縐嶇畻娉曞洜涓烘秹鍙婃爲涓庡爢鐨勬蹇碉紝鎵浠ヨ繖閲屼笉浜庤璁恒?br /> 絎笁閮ㄥ垎綾諱技鍔ㄨ剳絳嬨傝繖閲岀殑涓ょ綆楁硶騫朵笉鏄渶濂界殑錛堢敋鑷蟲湁鏈鎱㈢殑錛夛紝浣嗘槸綆楁硶鏈韓姣旇緝濂囩壒錛屽煎緱鍙傝冿紙緙栫▼鐨勮搴︼級銆傚悓鏃朵篃鍙互璁╂垜浠粠鍙﹀鐨勮搴︽潵璁よ瘑榪欎釜闂銆?br /> 絎洓閮ㄥ垎鏄垜閫佺粰澶у鐨勪竴涓鍚庣殑鐢滅偣——涓涓熀浜庢ā鏉跨殑閫氱敤蹇熸帓搴忋傜敱浜庢槸妯℃澘鍑芥暟鍙互瀵逛換浣曟暟鎹被鍨嬫帓搴忥紙鎶辨瓑錛岄噷闈嬌鐢ㄤ簡涓浜涜鍧涗笓瀹剁殑鍛㈢О錛夈? 鐜板湪錛岃鎴戜滑寮濮嬪惂錛? 涓銆佺畝鍗曟帓搴忕畻娉? 鐢變簬紼嬪簭姣旇緝綆鍗曪紝鎵浠ユ病鏈夊姞浠涔堟敞閲娿傛墍鏈夌殑紼嬪簭閮界粰鍑轟簡瀹屾暣鐨勮繍琛屼唬鐮侊紝騫跺湪鎴戠殑VC鐜涓嬭繍琛岄氳繃銆傚洜涓烘病鏈夋秹鍙奙FC鍜學INDOWS鐨勫唴瀹癸紝鎵浠ュ湪BORLAND C++鐨勫鉤鍙頒笂搴旇涔熶笉浼氭湁浠涔堥棶棰樼殑銆傚湪浠g爜鐨勫悗闈㈢粰鍑轟簡榪愯榪囩▼紺烘剰錛屽笇鏈涘鐞嗚В鏈夊府鍔┿? 1.鍐掓場娉曪細 榪欐槸鏈鍘熷錛屼篃鏄紬鎵鍛ㄧ煡鐨勬渶鎱㈢殑綆楁硶浜嗐備粬鐨勫悕瀛楃殑鐢辨潵鍥犱負瀹冪殑宸ヤ綔鐪嬫潵璞℃槸鍐掓場錛? #include <iostream.h> void BubbleSort(int* pData,int Count) { int iTemp; for(int i=1;i<Count;i++) { for(int j=Count-1;j>=i;j--) { if(pData[j]<pData[j-1]) { iTemp = pData[j-1]; pData[j-1] = pData[j]; pData[j] = iTemp; } } } } void main() { int data[] = {10,9,8,7,6,5,4}; BubbleSort(data,7); for (int i=0;i<7;i++) cout<<data[i]<<" "; cout<<"\n"; } 鍊掑簭(鏈緋熸儏鍐? 絎竴杞細10,9,8,7->10,9,7,8->10,7,9,8->7,10,9,8(浜ゆ崲3嬈? 絎簩杞細7,10,9,8->7,10,8,9->7,8,10,9(浜ゆ崲2嬈? 絎竴杞細7,8,10,9->7,8,9,10(浜ゆ崲1嬈? 寰幆嬈℃暟錛?嬈? 浜ゆ崲嬈℃暟錛?嬈? 鍏朵粬錛? 絎竴杞細8,10,7,9->8,10,7,9->8,7,10,9->7,8,10,9(浜ゆ崲2嬈? 絎簩杞細7,8,10,9->7,8,10,9->7,8,10,9(浜ゆ崲0嬈? 絎竴杞細7,8,10,9->7,8,9,10(浜ゆ崲1嬈? 寰幆嬈℃暟錛?嬈? 浜ゆ崲嬈℃暟錛?嬈? 涓婇潰鎴戜滑緇欏嚭浜嗙▼搴忔錛岀幇鍦ㄦ垜浠垎鏋愬畠錛氳繖閲岋紝褰卞搷鎴戜滑綆楁硶鎬ц兘鐨勪富瑕侀儴鍒嗘槸寰幆鍜屼氦鎹紝 鏄劇劧錛屾鏁拌秺澶氾紝鎬ц兘灝辮秺宸備粠涓婇潰鐨勭▼搴忔垜浠彲浠ョ湅鍑哄驚鐜殑嬈℃暟鏄浐瀹氱殑錛屼負1+2+...+n-1銆? 鍐欐垚鍏紡灝辨槸1/2*(n-1)*n銆? 鐜板湪娉ㄦ剰錛屾垜浠粰鍑篛鏂規硶鐨勫畾涔夛細 鑻ュ瓨鍦ㄤ竴甯擱噺K鍜岃搗鐐筺0錛屼嬌褰搉>=n0鏃訛紝鏈塮(n)<=K*g(n),鍒檉(n) = O(g(n))銆傦紙鍛靛懙錛屼笉瑕佽娌″濂芥暟瀛﹀憖錛屽浜庣紪紼嬫暟瀛︽槸闈炲父閲嶈鐨勶紒錛侊紒錛? 鐜板湪鎴戜滑鏉ョ湅1/2*(n-1)*n錛屽綋K=1/2錛宯0=1錛実(n)=n*n鏃訛紝1/2*(n-1)*n<=1/2*n*n=K*g(n)銆傛墍浠?n)=O(g(n))=O(n*n)銆傛墍浠ユ垜浠▼搴忓驚鐜殑澶嶆潅搴︿負O(n*n)銆? 鍐嶇湅浜ゆ崲銆備粠紼嬪簭鍚庨潰鎵璺熺殑琛ㄥ彲浠ョ湅鍒幫紝涓ょ鎯呭喌鐨勫驚鐜浉鍚岋紝浜ゆ崲涓嶅悓銆傚叾瀹炰氦鎹㈡湰韜悓鏁版嵁婧愮殑鏈夊簭紼嬪害鏈夋瀬澶х殑鍏崇郴錛屽綋鏁版嵁澶勪簬鍊掑簭鐨勬儏鍐墊椂錛?浜ゆ崲嬈℃暟鍚屽驚鐜竴鏍鳳紙姣忔寰幆鍒ゆ柇閮戒細浜ゆ崲錛夛紝澶嶆潅搴︿負O(n*n)銆傚綋鏁版嵁涓烘搴忥紝灝嗕笉浼氭湁浜ゆ崲銆傚鏉傚害涓篛(0)銆備貢搴忔椂澶勪簬涓棿鐘舵併傛鏄敱浜庤繖鏍?鐨勫師鍥狅紝鎴戜滑閫氬父閮芥槸閫氳繃寰幆嬈℃暟鏉ュ姣旂畻娉曘? 2.浜ゆ崲娉曪細 浜ゆ崲娉曠殑紼嬪簭鏈娓呮櫚綆鍗曪紝姣忔鐢ㄥ綋鍓嶇殑鍏冪礌涓涓鐨勫悓鍏跺悗鐨勫厓绱犳瘮杈冨茍浜ゆ崲銆? #include <iostream.h> void ExchangeSort(int* pData,int Count) { int iTemp; for(int i=0;i<Count-1;i++) { for(int j=i+1;j<Count;j++) { if(pData[j]<pData[i]) { iTemp = pData[i]; pData[i] = pData[j]; pData[j] = iTemp; } } } } void main() { int data[] = {10,9,8,7,6,5,4}; ExchangeSort(data,7); for (int i=0;i<7;i++) cout<<data[i]<<" "; cout<<"\n"; } 鍊掑簭(鏈緋熸儏鍐? 絎竴杞細10,9,8,7->9,10,8,7->8,10,9,7->7,10,9,8(浜ゆ崲3嬈? 絎簩杞細7,10,9,8->7,9,10,8->7,8,10,9(浜ゆ崲2嬈? 絎竴杞細7,8,10,9->7,8,9,10(浜ゆ崲1嬈? 寰幆嬈℃暟錛?嬈? 浜ゆ崲嬈℃暟錛?嬈? 鍏朵粬錛? 絎竴杞細8,10,7,9->8,10,7,9->7,10,8,9->7,10,8,9(浜ゆ崲1嬈? 絎簩杞細7,10,8,9->7,8,10,9->7,8,10,9(浜ゆ崲1嬈? 絎竴杞細7,8,10,9->7,8,9,10(浜ゆ崲1嬈? 寰幆嬈℃暟錛?嬈? 浜ゆ崲嬈℃暟錛?嬈? 浠庤繍琛岀殑琛ㄦ牸鏉ョ湅錛屼氦鎹㈠嚑涔庡拰鍐掓場涓鏍風碂銆備簨瀹炵‘瀹炲姝ゃ傚驚鐜鏁板拰鍐掓場涓鏍蜂篃鏄?/2*(n-1)*n錛屾墍浠ョ畻娉曠殑澶嶆潅搴︿粛鐒舵槸O(n*n)銆傜敱浜庢垜浠棤娉曠粰鍑烘墍鏈夌殑鎯呭喌錛屾墍浠ュ彧鑳界洿鎺ュ憡璇夊ぇ瀹朵粬浠湪浜ゆ崲涓婇潰涔熸槸涓鏍風殑緋熺硶錛堝湪鏌愪簺鎯呭喌涓嬬◢濂斤紝鍦ㄦ煇浜涙儏鍐典笅紼嶅樊錛夈? 3.閫夋嫨娉曪細 鐜板湪鎴戜滑緇堜簬鍙互鐪嬪埌涓鐐瑰笇鏈涳細閫夋嫨娉曪紝榪欑鏂規硶鎻愰珮浜嗕竴鐐規ц兘錛堟煇浜涙儏鍐典笅錛? 榪欑鏂規硶綾諱技鎴戜滑浜轟負鐨勬帓搴忎範鎯細浠庢暟鎹腑閫夋嫨鏈灝忕殑鍚岀涓涓間氦鎹紝鍦ㄤ粠鐪佷笅鐨勯儴鍒嗕腑閫夋嫨鏈灝忕殑涓庣浜屼釜浜ゆ崲錛岃繖鏍峰線澶嶄笅鍘匯? #include <iostream.h> void SelectSort(int* pData,int Count) { int iTemp; int iPos; for(int i=0;i<Count-1;i++) { iTemp = pData[i]; iPos = i; for(int j=i+1;j<Count;j++) { if(pData[j]<iTemp) { iTemp = pData[j]; iPos = j; } } pData[iPos] = pData[i]; pData[i] = iTemp; } } void main() { int data[] = {10,9,8,7,6,5,4}; SelectSort(data,7); for (int i=0;i<7;i++) cout<<data[i]<<" "; cout<<"\n"; } 鍊掑簭(鏈緋熸儏鍐? 絎竴杞細10,9,8,7->(iTemp=9)10,9,8,7->(iTemp=8)10,9,8,7->(iTemp=7)7,9,8,10(浜ゆ崲1嬈? 絎簩杞細7,9,8,10->7,9,8,10(iTemp=8)->(iTemp=8)7,8,9,10(浜ゆ崲1嬈? 絎竴杞細7,8,9,10->(iTemp=9)7,8,9,10(浜ゆ崲0嬈? 寰幆嬈℃暟錛?嬈? 浜ゆ崲嬈℃暟錛?嬈? 鍏朵粬錛? 絎竴杞細8,10,7,9->(iTemp=8)8,10,7,9->(iTemp=7)8,10,7,9->(iTemp=7)7,10,8,9(浜ゆ崲1嬈? 絎簩杞細7,10,8,9->(iTemp=8)7,10,8,9->(iTemp=8)7,8,10,9(浜ゆ崲1嬈? 絎竴杞細7,8,10,9->(iTemp=9)7,8,9,10(浜ゆ崲1嬈? 寰幆嬈℃暟錛?嬈? 浜ゆ崲嬈℃暟錛?嬈? 閬楁喚鐨勬槸綆楁硶闇瑕佺殑寰幆嬈℃暟渚濈劧鏄?/2*(n-1)*n銆傛墍浠ョ畻娉曞鏉傚害涓篛(n*n)銆? 鎴戜滑鏉ョ湅浠栫殑浜ゆ崲銆傜敱浜庢瘡嬈″灞傚驚鐜彧浜х敓涓嬈′氦鎹紙鍙湁涓涓渶灝忓鹼級銆傛墍浠(n)<=n 鎵浠ユ垜浠湁f(n)=O(n)銆?br />鎵浠ワ紝鍦ㄦ暟鎹緝涔辯殑鏃跺欙紝鍙互鍑忓皯涓瀹氱殑浜ゆ崲嬈℃暟銆? 4.鎻掑叆娉曪細 鎻掑叆娉曡緝涓哄鏉傦紝瀹冪殑鍩烘湰宸ヤ綔鍘熺悊鏄娊鍑虹墝錛屽湪鍓嶉潰鐨勭墝涓鎵劇浉搴旂殑浣嶇疆鎻掑叆錛岀劧鍚庣戶緇笅涓寮? #include <iostream.h> void InsertSort(int* pData,int Count) { int iTemp; int iPos; for(int i=1;i<Count;i++) { iTemp = pData[i]; iPos = i-1; while((iPos>=0) && (iTemp<pData[iPos])) { pData[iPos+1] = pData[iPos]; iPos--; } pData[iPos+1] = iTemp; } } void main() { int data[] = {10,9,8,7,6,5,4}; InsertSort(data,7); for (int i=0;i<7;i++) cout<<data[i]<<" "; cout<<"\n"; } 鍊掑簭(鏈緋熸儏鍐? 絎竴杞細10,9,8,7->9,10,8,7(浜ゆ崲1嬈?(寰幆1嬈? 絎簩杞細9,10,8,7->8,9,10,7(浜ゆ崲1嬈?(寰幆2嬈? 絎竴杞細8,9,10,7->7,8,9,10(浜ゆ崲1嬈?(寰幆3嬈? 寰幆嬈℃暟錛?嬈? 浜ゆ崲嬈℃暟錛?嬈? 鍏朵粬錛? 絎竴杞細8,10,7,9->8,10,7,9(浜ゆ崲0嬈?(寰幆1嬈? 絎簩杞細8,10,7,9->7,8,10,9(浜ゆ崲1嬈?(寰幆2嬈? 絎竴杞細7,8,10,9->7,8,9,10(浜ゆ崲1嬈?(寰幆1嬈? 寰幆嬈℃暟錛?嬈? 浜ゆ崲嬈℃暟錛?嬈? 涓婇潰緇撳熬鐨勮涓哄垎鏋愪簨瀹炰笂閫犳垚浜嗕竴縐嶅亣璞★紝璁╂垜浠涓鴻繖縐嶇畻娉曟槸綆鍗曠畻娉曚腑鏈濂界殑錛屽叾瀹炰笉鏄紝鍥犱負鍏跺驚鐜鏁拌櫧鐒跺茍涓嶅浐瀹氾紝鎴戜滑浠嶅彲浠ヤ嬌鐢∣鏂?娉曘備粠涓婇潰鐨勭粨鏋滃彲浠ョ湅鍑猴紝寰幆鐨勬鏁癴(n)<= 1/2*n*(n-1)<=1/2*n*n銆傛墍浠ュ叾澶嶆潅搴︿粛涓篛(n*n)錛堣繖閲岃鏄庝竴涓嬶紝鍏跺疄濡傛灉涓嶆槸涓轟簡灞曠ず榪欎簺綆鍗曟帓搴忕殑涓嶅悓錛屼氦鎹㈡鏁頒粛鐒?鍙互榪欐牱鎺ㄥ錛夈傜幇鍦ㄧ湅浜ゆ崲錛屼粠澶栬涓婄湅錛屼氦鎹㈡鏁版槸O(n)錛堟帹瀵肩被浼奸夋嫨娉曪級錛屼絾鎴戜滑姣忔瑕佽繘琛屼笌鍐呭眰寰幆鐩稿悓嬈℃暟鐨?#8216;=’鎿嶄綔銆傛甯哥殑涓嬈′氦鎹㈡垜浠?闇瑕佷笁嬈?#8216;=’錛岃岃繖閲屾樉鐒跺浜嗕竴浜涳紝鎵浠ユ垜浠氮璐逛簡鏃墮棿銆? 鏈緇堬紝鎴戜釜浜鴻涓猴紝鍦ㄧ畝鍗曟帓搴忕畻娉曚腑錛岄夋嫨娉曟槸鏈濂界殑銆? 浜屻侀珮綰ф帓搴忕畻娉曪細 楂樼駭鎺掑簭綆楁硶涓垜浠皢鍙粙緇嶈繖涓縐嶏紝鍚屾椂涔熸槸鐩墠鎴戞墍鐭ラ亾錛堟垜鐪嬭繃鐨勮祫鏂欎腑錛夌殑鏈蹇殑銆? 瀹冪殑宸ヤ綔鐪嬭搗鏉ヤ粛鐒惰薄涓涓簩鍙夋爲銆傞鍏堟垜浠夋嫨涓涓腑闂村糾iddle紼嬪簭涓垜浠嬌鐢ㄦ暟緇勪腑闂村鹼紝鐒跺悗鎶婃瘮瀹冨皬鐨勬斁鍦ㄥ乏杈癸紝澶х殑鏀懼湪鍙寵竟錛堝叿浣撶殑瀹炵幇鏄粠涓よ竟鎵撅紝鎵懼埌涓瀵瑰悗浜ゆ崲錛夈傜劧鍚庡涓よ竟鍒嗗埆浣跨敤榪欎釜榪囩▼錛堟渶瀹規槗鐨勬柟娉?#8212;—閫掑綊錛夈? 1.蹇熸帓搴忥細 #include <iostream.h> void run(int* pData,int left,int right) { int i,j; int middle,iTemp; i = left; j = right; middle = pData[(left+right)/2]; //姹備腑闂村? do{ while((pData[i]<middle) && (i<right))//浠庡乏鎵弿澶т簬涓肩殑鏁? i++; while((pData[j]>middle) && (j>left))//浠庡彸鎵弿澶т簬涓肩殑鏁? j--; if(i<=j)//鎵懼埌浜嗕竴瀵瑰? { //浜ゆ崲 iTemp = pData[i]; pData[i] = pData[j]; pData[j] = iTemp; i++; j--; } }while(i<=j);//濡傛灉涓よ竟鎵弿鐨勪笅鏍囦氦閿欙紝灝卞仠姝紙瀹屾垚涓嬈★級 //褰撳乏杈歸儴鍒嗘湁鍊?left<j)錛岄掑綊宸﹀崐杈? if(left<j) run(pData,left,j); //褰撳彸杈歸儴鍒嗘湁鍊?right>i)錛岄掑綊鍙沖崐杈? if(right>i) run(pData,i,right); } void QuickSort(int* pData,int Count) { run(pData,0,Count-1); } void main() { int data[] = {10,9,8,7,6,5,4}; QuickSort(data,7); for (int i=0;i<7;i++) cout<<data[i]<<" "; cout<<"\n"; } 榪欓噷鎴戞病鏈夌粰鍑鴻涓虹殑鍒嗘瀽錛屽洜涓鴻繖涓緢綆鍗曪紝鎴戜滑鐩存帴鏉ュ垎鏋愮畻娉曪細棣栧厛鎴戜滑鑰冭檻鏈鐞嗘兂鐨勬儏鍐? 1.鏁扮粍鐨勫ぇ灝忔槸2鐨勫箓錛岃繖鏍峰垎涓嬪幓濮嬬粓鍙互琚?鏁撮櫎銆傚亣璁句負2鐨刱嬈℃柟錛屽嵆k=log2(n)銆? 2.姣忔鎴戜滑閫夋嫨鐨勫煎垰濂芥槸涓棿鍊鹼紝榪欐牱錛屾暟緇勬墠鍙互琚瓑鍒嗐? 絎竴灞傞掑綊錛屽驚鐜痭嬈★紝絎簩灞傚驚鐜?*(n/2)...... 鎵浠ュ叡鏈塶+2(n/2)+4(n/4)+...+n*(n/n) = n+n+n+...+n=k*n=log2(n)*n 鎵浠ョ畻娉曞鏉傚害涓篛(log2(n)*n) 鍏朵粬鐨勬儏鍐靛彧浼氭瘮榪欑鎯呭喌宸紝鏈宸殑鎯呭喌鏄瘡嬈¢夋嫨鍒扮殑middle閮芥槸鏈灝忓兼垨鏈澶у鹼紝閭d箞浠栧皢鍙樻垚浜ゆ崲娉曪紙鐢變簬浣跨敤浜嗛掑綊錛屾儏鍐墊洿緋燂級銆備絾鏄綘璁や負榪欑鎯呭喌鍙戠敓鐨勫嚑鐜囨湁澶氬ぇ錛燂紵鍛靛懙錛屼綘瀹屽叏涓嶅繀鎷呭績榪欎釜闂銆傚疄璺佃瘉鏄庯紝澶у鏁扮殑鎯呭喌錛屽揩閫熸帓搴忔繪槸鏈濂界殑銆? 濡傛灉浣犳媴蹇冭繖涓棶棰橈紝浣犲彲浠ヤ嬌鐢ㄥ爢鎺掑簭錛岃繖鏄竴縐嶇ǔ瀹氱殑O(log2(n)*n)綆楁硶錛屼絾鏄氬父鎯呭喌涓嬮熷害瑕佹參 浜庡揩閫熸帓搴忥紙鍥犱負瑕侀噸緇勫爢錛夈? 涓夈佸叾浠栨帓搴? 1.鍙屽悜鍐掓場錛? 閫氬父鐨勫啋娉℃槸鍗曞悜鐨勶紝鑰岃繖閲屾槸鍙屽悜鐨勶紝涔熷氨鏄榪樿榪涜鍙嶅悜鐨勫伐浣溿? 浠g爜鐪嬭搗鏉ュ鏉傦紝浠旂粏鐞嗕竴涓嬪氨鏄庣櫧浜嗭紝鏄竴涓潵鍥為渿鑽$殑鏂瑰紡銆? 鍐欒繖孌典唬鐮佺殑浣滆呰涓鴻繖鏍峰彲浠ュ湪鍐掓場鐨勫熀紜涓婂噺灝戜竴浜涗氦鎹紙鎴戜笉榪欎箞璁や負錛屼篃璁告垜閿欎簡錛夈? 鍙嶆鎴戣涓鴻繖鏄竴孌墊湁瓚g殑浠g爜錛屽煎緱涓鐪嬨? #include <iostream.h> void Bubble2Sort(int* pData,int Count) { int iTemp; int left = 1; int right =Count -1; int t; do { //姝e悜鐨勯儴鍒? for(int i=right;i>=left;i--) { if(pData[i]<pData[i-1]) { iTemp = pData[i]; pData[i] = pData[i-1]; pData[i-1] = iTemp; t = i; } } left = t+1; //鍙嶅悜鐨勯儴鍒? for(i=left;i<right+1;i++) { if(pData[i]<pData[i-1]) { iTemp = pData[i]; pData[i] = pData[i-1]; pData[i-1] = iTemp; t = i; } } right = t-1; }while(left<=right); } void main() { int data[] = {10,9,8,7,6,5,4}; Bubble2Sort(data,7); for (int i=0;i<7;i++) cout<<data[i]<<" "; cout<<"\n"; } 2.SHELL鎺掑簭 榪欎釜鎺掑簭闈炲父澶嶆潅錛岀湅浜嗙▼搴忓氨鐭ラ亾浜嗐? 棣栧厛闇瑕佷竴涓掑噺鐨勬闀匡紝榪欓噷鎴戜滑浣跨敤鐨勬槸9銆?銆?銆?錛堟渶鍚庣殑姝ラ暱蹇呴』鏄?錛夈? 宸ヤ綔鍘熺悊鏄鍏堝鐩擱殧9-1涓厓绱犵殑鎵鏈夊唴瀹規帓搴忥紝鐒跺悗鍐嶄嬌鐢ㄥ悓鏍風殑鏂規硶瀵圭浉闅?-1涓厓绱犵殑鎺掑簭浠ユ綾繪帹銆? #include <iostream.h> void ShellSort(int* pData,int Count) { int step[4]; step[0] = 9; step[1] = 5; step[2] = 3; step[3] = 1; int iTemp; int k,s,w; for(int i=0;i<4;i++) { k = step[i]; s = -k; for(int j=k;j<Count;j++) { iTemp = pData[j]; w = j-k;//姹備笂step涓厓绱犵殑涓嬫爣 if(s ==0) { s = -k; s++; pData[s] = iTemp; } while((iTemp<pData[w]) && (w>=0) && (w<=Count)) { pData[w+k] = pData[w]; w = w-k; } pData[w+k] = iTemp; } } } void main() { int data[] = {10,9,8,7,6,5,4,3,2,1,-10,-1}; ShellSort(data,12); for (int i=0;i<12;i++) cout<<data[i]<<" "; cout<<"\n"; } 鍛靛懙錛岀▼搴忕湅璧鋒潵鏈変簺澶寸柤銆備笉榪囦篃涓嶆槸寰堥毦錛屾妸s==0鐨勫潡鍘繪帀灝辮交鏉懼浜嗭紝榪欓噷鏄伩鍏嶄嬌鐢?姝ラ暱閫犳垚紼嬪簭寮傚父鑰屽啓鐨勪唬鐮併傝繖涓唬鐮佹垜璁や負寰堝煎緱涓鐪嬨? 榪欎釜綆楁硶鐨勫緱鍚嶆槸鍥犱負鍏跺彂鏄庤呯殑鍚嶅瓧D.L.SHELL銆備緷鐓у弬鑰冭祫鏂欎笂鐨勮娉曪細“鐢變簬澶嶆潅鐨勬暟瀛﹀師鍥犻伩鍏嶄嬌鐢?鐨勫箓嬈℃闀匡紝瀹冭兘闄嶄綆綆楁硶鏁堢巼銆?#8221;鍙﹀綆楁硶鐨勫鏉傚害涓簄鐨?.2嬈″箓銆傚悓鏍峰洜涓洪潪甯稿鏉傚茍“瓚呭嚭鏈功璁ㄨ鑼冨洿”鐨勫師鍥狅紙鎴戜篃涓嶇煡閬撹繃紼嬶級錛屾垜浠彧鏈夌粨鏋滀簡銆? 鏈鍚庯紝甯屾湜澶у鎰夊揩鐨勭紪紼嬨傛湁浠涔堟剰瑙侊紝緇欐垜鎻愬惂錛? ]]> Hash 綆楁硶鍙婂叾搴旂敤(杞? http://m.shnenglu.com/softko/archive/2010/12/02/135309.htmleircQ eircQ Thu, 02 Dec 2010 15:08:00 GMT http://m.shnenglu.com/softko/archive/2010/12/02/135309.html http://m.shnenglu.com/softko/comments/135309.html http://m.shnenglu.com/softko/archive/2010/12/02/135309.html#Feedback 0 http://m.shnenglu.com/softko/comments/commentRss/135309.html http://m.shnenglu.com/softko/services/trackbacks/135309.html 鏈燂細2004-07-30] 鏉ユ簮錛?a target="_blank" style="color: rgb(65, 81, 154); text-decoration: none; ">CSDN 浣滆咃細 [瀛椾綋錛?a style="color: rgb(65, 81, 154); text-decoration: none; ">澶?/a> 涓?/a> 灝?/a>] --------------- 浠涔堟槸 Hash Hash 鐨勯噸瑕佺壒鎬?nbsp; Hash 鍑芥暟鐨勫疄鐜?nbsp; 涓昏鐨?Hash 綆楁硶 Hash 綆楁硶鐨勫畨鍏ㄩ棶棰?nbsp; Hash 綆楁硶鐨勫簲鐢?nbsp; 緇?璁?nbsp; ---------------
Hash錛屼竴鑸炕璇戝仛“鏁e垪”錛屼篃鏈夌洿鎺ラ煶璇戜負"鍝堝笇"鐨勶紝灝辨槸鎶婁換鎰忛暱搴︾殑杈撳叆錛堝張鍙仛棰勬槧灝勶紝 pre-image錛夛紝閫氳繃鏁e垪綆楁硶錛屽彉鎹㈡垚鍥哄畾闀垮害鐨勮緭鍑猴紝璇ヨ緭鍑哄氨鏄暎鍒楀箋傝繖縐嶈漿鎹㈡槸涓縐嶅帇緙╂槧灝勶紝涔熷氨鏄紝鏁e垪鍊肩殑絀洪棿閫氬父榪滃皬浜庤緭鍏ョ殑絀洪棿錛屼笉鍚岀殑杈撳叆鍙兘浼氭暎鍒楁垚鐩稿悓鐨勮緭鍑猴紝鑰屼笉鍙兘浠庢暎鍒楀兼潵鍞竴鐨勭‘瀹氳緭鍏ュ箋?/p>
鏁板琛ㄨ堪涓猴細h = H(M) 錛屽叾涓璈( )--鍗曞悜鏁e垪鍑芥暟錛孧--浠繪剰闀垮害鏄庢枃錛宧--鍥哄畾闀垮害鏁e垪鍊箋?/p>
鍦ㄤ俊鎭畨鍏ㄩ鍩熶腑搴旂敤鐨凥ash綆楁硶錛岃繕闇瑕佹弧瓚沖叾浠栧叧閿壒鎬э細
絎竴褰撶劧鏄崟鍚戞?one-way)錛屼粠棰勬槧灝勶紝鑳藉綆鍗曡繀閫熺殑寰楀埌鏁e垪鍊鹼紝鑰屽湪璁$畻涓婁笉鍙兘鏋勯犱竴涓鏄犲皠錛屼嬌鍏舵暎鍒楃粨鏋滅瓑浜庢煇涓壒瀹氱殑鏁e垪鍊鹼紝鍗蟲瀯閫犵浉搴旂殑M=H-1(h)涓嶅彲琛屻傝繖鏍鳳紝鏁e垪鍊煎氨鑳藉湪緇熻涓婂敮涓鐨勮〃寰佽緭鍏ュ鹼紝鍥犳錛屽瘑鐮佸涓婄殑 Hash 鍙堣縐頒負"娑堟伅鎽樿(message digest)"錛屽氨鏄姹傝兘鏂逛究鐨勫皢"娑堟伅"榪涜"鎽樿"錛屼絾鍦?鎽樿"涓棤娉曞緱鍒版瘮"鎽樿"鏈韓鏇村鐨勫叧浜?娑堟伅"鐨勪俊鎭?/p>
絎簩鏄姉鍐茬獊鎬?collision-resistant)錛屽嵆鍦ㄧ粺璁′笂鏃犳硶浜х敓2涓暎鍒楀肩浉鍚岀殑棰勬槧灝勩傜粰瀹歁錛岃綆椾笂鏃犳硶鎵懼埌M'錛屾弧瓚矵(M)=H(M') 錛屾璋撳急鎶楀啿紿佹э紱璁$畻涓婁篃闅句互瀵繪壘涓瀵逛換鎰忕殑M鍜孧'錛屼嬌婊¤凍H(M)=H(M') 錛屾璋撳己鎶楀啿紿佹с傝姹?寮烘姉鍐茬獊鎬?涓昏鏄負浜嗛槻鑼冩墍璋?鐢熸棩鏀誨嚮(birthday attack)"錛屽湪涓涓?0浜虹殑鍥綋涓紝浣犺兘鎵懼埌鍜屼綘鐢熸棩鐩稿悓鐨勪漢鐨勬鐜囨槸2.4%錛岃屽湪鍚屼竴鍥綋涓紝鏈?浜虹敓鏃ョ浉鍚岀殑姒傜巼鏄?1.7%銆傜被浼肩殑錛屽綋棰勬槧灝勭殑絀洪棿寰堝ぇ鐨勬儏鍐典笅錛岀畻娉曞繀欏繪湁瓚沖鐨勫己搴︽潵淇濊瘉涓嶈兘杞繪槗鎵懼埌"鐩稿悓鐢熸棩"鐨勪漢銆?/p>
絎笁鏄槧灝勫垎甯冨潎鍖鎬у拰宸垎鍒嗗竷鍧囧寑鎬э紝鏁e垪緇撴灉涓紝涓?0 鐨?bit 鍜屼負 1 鐨?bit 錛屽叾鎬繪暟搴旇澶ц嚧鐩哥瓑錛涜緭鍏ヤ腑涓涓?bit 鐨勫彉鍖栵紝鏁e垪緇撴灉涓皢鏈変竴鍗婁互涓婄殑 bit 鏀瑰彉錛岃繖鍙堝彨鍋?闆穿鏁堝簲(avalanche effect)"錛涜瀹炵幇浣挎暎鍒楃粨鏋滀腑鍑虹幇 1bit 鐨勫彉鍖栵紝鍒欒緭鍏ヤ腑鑷沖皯鏈変竴鍗婁互涓婄殑 bit 蹇呴』鍙戠敓鍙樺寲銆傚叾瀹炶川鏄繀欏諱嬌杈撳叆涓瘡涓涓?bit 鐨勪俊鎭紝灝介噺鍧囧寑鐨勫弽鏄犲埌杈撳嚭鐨勬瘡涓涓?bit 涓婂幓錛涜緭鍑轟腑鐨勬瘡涓涓?bit錛岄兘鏄緭鍏ヤ腑灝藉彲鑳藉 bit 鐨勪俊鎭竴璧蜂綔鐢ㄧ殑緇撴灉銆?/p>
Damgard 鍜?Merkle 瀹氫箟浜嗘墍璋?#8220;鍘嬬緝鍑芥暟(compression function)”錛屽氨鏄皢涓涓浐瀹氶暱搴﹁緭鍏ワ紝鍙樻崲鎴愯緝鐭殑鍥哄畾闀垮害鐨勮緭鍑猴紝榪欏瀵嗙爜瀛﹀疄璺典笂 Hash 鍑芥暟鐨勮璁′駭鐢熶簡寰堝ぇ鐨勫獎鍝嶃侶ash鍑芥暟灝辨槸琚璁′負鍩轟簬閫氳繃鐗瑰畾鍘嬬緝鍑芥暟鐨勪笉鏂噸澶?#8220;鍘嬬緝”杈撳叆鐨勫垎緇勫拰鍓嶄竴嬈″帇緙╁鐞嗙殑緇撴灉鐨勮繃紼嬶紝鐩村埌鏁翠釜娑堟伅閮借鍘嬬緝瀹屾瘯錛屾渶鍚庣殑杈撳嚭浣滀負鏁翠釜娑堟伅鐨勬暎鍒楀箋傚敖綆¤繕緙轟箯涓ユ牸鐨勮瘉鏄庯紝浣嗙粷澶у鏁頒笟鐣岀殑鐮旂┒鑰呴兘鍚屾剰錛屽鏋滃帇緙╁嚱鏁版槸瀹夊叏鐨勶紝閭d箞浠ヤ笂榪板艦寮忔暎鍒椾換鎰忛暱搴︾殑娑堟伅涔熷皢鏄畨鍏ㄧ殑銆傝繖灝辨槸鎵璋?Damgard/Merkle 緇撴瀯錛?/p>
鍦ㄤ笅鍥句腑錛屼換鎰忛暱搴︾殑娑堟伅琚垎鎷嗘垚絎﹀悎鍘嬬緝鍑芥暟杈撳叆瑕佹眰鐨勫垎緇勶紝鏈鍚庝竴涓垎緇勫彲鑳介渶瑕佸湪鏈熬娣諱笂鐗瑰畾鐨勫~鍏呭瓧鑺傦紝榪欎簺鍒嗙粍灝嗚欏哄簭澶勭悊錛岄櫎浜嗙涓涓秷鎭垎緇勫皢涓庢暎鍒楀垵濮嬪寲鍊間竴璧蜂綔涓哄帇緙╁嚱鏁扮殑杈撳叆澶栵紝褰撳墠鍒嗙粍灝嗗拰鍓嶄竴涓垎緇勭殑鍘嬬緝鍑芥暟杈撳嚭涓璧瘋浣滀負榪欎竴嬈″帇緙╃殑杈撳叆錛岃屽叾杈撳嚭鍙堝皢琚綔涓轟笅涓涓垎緇勫帇緙╁嚱鏁拌緭鍏ョ殑涓閮ㄥ垎錛岀洿鍒版渶鍚庝竴涓帇緙╁嚱鏁扮殑杈撳嚭錛屽皢琚綔涓烘暣涓秷鎭暎鍒楃殑緇撴灉銆?/p>
MD5 鍜?SHA1 鍙互璇存槸鐩墠搴旂敤鏈騫挎硾鐨凥ash綆楁硶錛岃屽畠浠兘鏄互 MD4 涓哄熀紜璁捐鐨勩?/p>
1) MD4 MD4(RFC 1320)鏄?MIT 鐨?Ronald L. Rivest 鍦?1990 騫磋璁$殑錛孧D 鏄?Message Digest 鐨勭緝鍐欍傚畠閫傜敤鍦?2浣嶅瓧闀跨殑澶勭悊鍣ㄤ笂鐢ㄩ珮閫熻蔣浠跺疄鐜?-瀹冩槸鍩轟簬 32 浣嶆搷浣滄暟鐨勪綅鎿嶄綔鏉ュ疄鐜扮殑銆傚畠鐨勫畨鍏ㄦт笉鍍廟SA閭f牱鍩轟簬鏁板鍋囪錛屽敖綆?Den Boer銆丅osselaers 鍜?Dobbertin 寰堝揩灝辯敤鍒嗘瀽鍜屽樊鍒嗘垚鍔熺殑鏀誨嚮浜嗗畠3杞彉鎹腑鐨?2 杞紝璇佹槑浜嗗畠騫朵笉鍍忔湡鏈涚殑閭f牱瀹夊叏錛屼絾瀹冪殑鏁翠釜綆楁硶騫舵病鏈夌湡姝h鐮磋В榪囷紝Rivest 涔熷緢蹇繘琛屼簡鏀硅繘銆?/p>
涓嬮潰鏄竴浜汳D4鏁e垪緇撴灉鐨勪緥瀛愶細
MD4 ("") = 31d6cfe0d16ae931b73c59d7e0c089c0 MD4 ("a") = bde52cb31de33e46245e05fbdbd6fb24 MD4 ("abc") = a448017aaf21d8525fc10ae87aa6729d MD4 ("message digest") = d9130a8164549fe818874806e1c7014b MD4 ("abcdefghijklmnopqrstuvwxyz") = d79e1c308aa5bbcdeea8ed63df412da9 MD4 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = 043f8582f241db351ce627e153e7f0e4 MD4 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = e33b4ddc9c38f2199c3e7b164fcc0536
2) MD5 MD5(RFC 1321)鏄?Rivest 浜?991騫村MD4鐨勬敼榪涚増鏈傚畠瀵硅緭鍏ヤ粛浠?12浣嶅垎緇勶紝鍏惰緭鍑烘槸4涓?2浣嶅瓧鐨勭駭鑱旓紝涓?MD4 鐩稿悓銆傚畠杈僊D4鎵鍋氱殑鏀硅繘鏄細
1) 鍔犲叆浜嗙鍥涜疆 2) 姣忎竴姝ラ兘鏈夊敮涓鐨勫姞娉曞父鏁幫紱 3) 絎簩杞腑鐨凣鍑芥暟浠?(X 鈭?Y) 鈭?(X 鈭?Z) 鈭?(Y 鈭?Z)) 鍙樹負 ((X 鈭?Z) 鈭?(Y 鈭?锝瀂))浠ュ噺灝忓叾瀵圭О鎬э紱 4) 姣忎竴姝ラ兘鍔犲叆浜嗗墠涓姝ョ殑緇撴灉錛屼互鍔犲揩"闆穿鏁堝簲"錛?nbsp; 5) 鏀瑰彉浜嗙2杞拰絎?杞腑璁塊棶杈撳叆瀛愬垎緇勭殑欏哄簭錛屽噺灝忎簡褰㈠紡鐨勭浉浼肩▼搴︼紱 6) 榪戜技浼樺寲浜嗘瘡杞殑寰幆宸︾Щ浣嶇Щ閲忥紝浠ユ湡鍔犲揩"闆穿鏁堝簲"錛屽悇杞殑寰幆宸︾Щ閮戒笉鍚屻?nbsp; 灝界MD5姣擬D4鏉ュ緱澶嶆潅錛屽茍涓旈熷害杈冧箣瑕佹參涓鐐癸紝浣嗘洿瀹夊叏錛屽湪鎶楀垎鏋愬拰鎶楀樊鍒嗘柟闈㈣〃鐜版洿濂姐?/p>
娑堟伅棣栧厛琚媶鎴愯嫢騫蹭釜512浣嶇殑鍒嗙粍錛屽叾涓渶鍚?12浣嶄竴涓垎緇勬槸“娑堟伅灝?濉厖瀛楄妭(100…0)+64 浣嶆秷鎭暱搴?#8221;錛屼互紜繚瀵逛簬涓嶅悓闀垮害鐨勬秷鎭紝璇ュ垎緇勪笉鐩稿悓銆?4浣嶆秷鎭暱搴︾殑闄愬埗瀵艱嚧浜哅D5瀹夊叏鐨勮緭鍏ラ暱搴﹀繀欏誨皬浜?64bit錛屽洜涓哄ぇ浜?4浣嶇殑闀垮害淇℃伅灝嗚蹇界暐銆傝?涓?2浣嶅瘎瀛樺櫒瀛楀垵濮嬪寲涓篈=0x01234567錛孊=0x89abcdef錛孋=0xfedcba98錛孌=0x76543210錛屽畠浠皢濮嬬粓鍙備笌榪愮畻騫跺艦鎴愭渶緇堢殑鏁e垪緇撴灉銆?/p>
鎺ョ潃鍚勪釜512浣嶆秷鎭垎緇勪互16涓?2浣嶅瓧鐨勫艦寮忚繘鍏ョ畻娉曠殑涓誨驚鐜紝512浣嶆秷鎭垎緇勭殑涓暟鎹喅瀹氫簡寰幆鐨勬鏁般備富寰幆鏈?杞紝姣忚疆鍒嗗埆鐢ㄥ埌浜嗛潪綰挎у嚱鏁?/p>
F(X, Y, Z) = (X 鈭?Y) 鈭?(锝瀀 鈭?Z) G(X, Y, Z) = (X 鈭?Z) 鈭?(Y 鈭?锝瀂) H(X, Y, Z) =X ⊕ Y ⊕ Z I(X, Y, Z) = X ⊕ (Y 鈭?锝瀂) 榪?杞彉鎹㈡槸瀵硅繘鍏ヤ富寰幆鐨?12浣嶆秷鎭垎緇勭殑16涓?2浣嶅瓧鍒嗗埆榪涜濡備笅鎿嶄綔錛氬皢A銆丅銆丆銆丏鐨勫壇鏈琣銆乥銆乧銆乨涓殑3涓粡F銆丟銆丠銆両榪愮畻鍚庣殑緇撴灉涓庣4涓浉鍔狅紝鍐嶅姞涓?2浣嶅瓧鍜屼竴涓?2浣嶅瓧鐨勫姞娉曞父鏁幫紝騫跺皢鎵寰椾箣鍊煎驚鐜乏縐昏嫢騫蹭綅錛屾渶鍚庡皢鎵寰楃粨鏋滃姞涓奱銆乥銆乧銆乨涔嬩竴錛屽茍鍥為佽嚦ABCD錛岀敱姝ゅ畬鎴愪竴嬈″驚鐜?/p>
鎵鐢ㄧ殑鍔犳硶甯告暟鐢辮繖鏍蜂竴寮犺〃T[i]鏉ュ畾涔夛紝鍏朵腑i涓?…64錛孴[i]鏄痠鐨勬寮︾粷瀵瑰間箣4294967296嬈℃柟鐨勬暣鏁伴儴鍒嗭紝榪欐牱鍋氭槸涓轟簡閫氳繃姝e雞鍑芥暟鍜屽箓鍑芥暟鏉ヨ繘涓姝ユ秷闄ゅ彉鎹腑鐨勭嚎鎬фс?/p>
褰撴墍鏈?12浣嶅垎緇勯兘榪愮畻瀹屾瘯鍚庯紝ABCD鐨勭駭鑱斿皢琚緭鍑轟負MD5鏁e垪鐨勭粨鏋溿備笅闈㈡槸涓浜汳D5鏁e垪緇撴灉鐨勪緥瀛愶細
MD5 ("") = d41d8cd98f00b204e9800998ecf8427e MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661 MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72 MD5 ("message digest") = f96b697d7cb7938d525a2f31aaf161d0 MD5 ("abcdefghijklmnopqrstuvwxyz") = c3fcd3d76192e4007dfb496cca67e13b MD5 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = d174ab98d277d9f5a5611c2c9f419d9f MD5 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = 57edf4a22be3c955ac49da2e2107b67a 鍙傝冪浉搴擱FC鏂囨。鍙互寰楀埌MD4銆丮D5綆楁硶鐨勮緇嗘弿榪板拰綆楁硶鐨凜婧愪唬鐮併?/p>
3) SHA1 鍙婂叾浠?nbsp; SHA1鏄敱NIST NSA璁捐涓哄悓DSA涓璧蜂嬌鐢ㄧ殑錛岃闂甴ttp://www.itl.nist.gov/fipspubs鍙互寰楀埌瀹冪殑璇︾粏瑙勮寖--[/url]"FIPS PUB 180-1 SECURE HASH STANDARD"銆傚畠瀵歸暱搴﹀皬浜?64鐨勮緭鍏ワ紝浜х敓闀垮害涓?60bit鐨勬暎鍒楀鹼紝鍥犳鎶楃┓涓?brute-force)鎬ф洿濂姐係HA-1 璁捐鏃跺熀浜庡拰MD4鐩稿悓鍘熺悊,騫朵笖妯′豢浜嗚綆楁硶銆傚洜涓哄畠灝嗕駭鐢?60bit鐨勬暎鍒楀鹼紝鍥犳瀹冩湁5涓弬涓庤繍綆楃殑32浣嶅瘎瀛樺櫒瀛楋紝娑堟伅鍒嗙粍鍜屽~鍏呮柟寮忎笌MD5鐩稿悓錛屼富寰幆涔熷悓鏍鋒槸4杞紝浣嗘瘡杞繘琛?0嬈℃搷浣滐紝闈炵嚎鎬ц繍綆椼佺Щ浣嶅拰鍔犳硶榪愮畻涔熶笌MD5綾諱技錛屼絾闈炵嚎鎬у嚱鏁般佸姞娉曞父鏁板拰寰幆宸︾Щ鎿嶄綔鐨勮璁℃湁涓浜涘尯鍒紝鍙互鍙傝冧笂闈㈡彁鍒扮殑瑙勮寖鏉ヤ簡瑙h繖浜涚粏鑺傘備笅闈㈡槸涓浜汼HA1鏁e垪緇撴灉鐨勪緥瀛愶細
SHA1 ("abc") = a9993e36 4706816a ba3e2571 7850c26c 9cd0d89d SHA1 ("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq") = 84983e44 1c3bd26e baae4aa1 f95129e5 e54670f1 鍏朵粬涓浜涚煡鍚嶇殑Hash綆楁硶榪樻湁MD2銆丯-Hash銆丷IPE-MD銆丠AVAL絳夌瓑銆備笂闈㈡彁鍒扮殑榪欎簺閮藉睘浜?綰?Hash綆楁硶銆傝繕鏈夊彟2綾籋ash綆楁硶錛屼竴綾誨氨鏄熀浜庡縐板垎緇勭畻娉曠殑鍗曞悜鏁e垪綆楁硶錛屽吀鍨嬬殑渚嬪瓙鏄熀浜嶥ES鐨勬墍璋揇avies-Meyer綆楁硶錛屽彟澶栬繕鏈夌粡IDEA鏀硅繘鐨凞avies-Meyer綆楁硶錛屽畠浠袱鑰呯洰鍓嶉兘琚涓烘槸瀹夊叏鐨勭畻娉曘傚彟涓綾繪槸鍩轟簬妯¤繍綆?紱繪暎瀵規暟鐨勶紝涔熷氨鏄熀浜庡叕寮瀵嗛挜綆楁硶鐨勶紝浣嗗洜涓哄叾榪愮畻寮閿澶ぇ錛岃岀己涔忓緢濂界殑搴旂敤鍓嶆櫙銆?/p>
娌℃湁閫氳繃鍒嗘瀽鍜屽樊鍒嗘敾鍑昏冮獙鐨勭畻娉曪紝澶у閮藉凡緇忓き鎶樺湪瀹為獙瀹ら噷浜嗭紝鍥犳錛屽鏋滅洰鍓嶆祦琛岀殑Hash綆楁硶鑳藉畬鍏ㄧ鍚堝瘑鐮佸鎰忎箟涓婄殑鍗曞悜鎬у拰鎶楀啿紿佹э紝灝變繚璇佷簡鍙湁絀蜂婦錛屾墠鏄牬鍧廐ash榪愮畻瀹夊叏鐗規х殑鍞竴鏂規硶銆備負浜嗗鎶楀急鎶楀啿紿佹э紝鎴戜滑鍙兘瑕佺┓涓句釜鏁板拰鏁e垪鍊肩┖闂撮暱搴︿竴鏍峰ぇ鐨勮緭鍏ワ紝鍗沖皾璇?^128鎴?^160涓笉鍚岀殑杈撳叆錛岀洰鍓嶄竴鍙伴珮妗d釜浜虹數鑴戝彲鑳介渶瑕?0^25騫存墠鑳藉畬鎴愯繖涓鑹板法鐨勫伐浣滐紝鍗充嬌鏄渶楂樼鐨勫茍琛岀郴緇燂紝榪欎篃涓嶆槸鍦ㄥ嚑鍗冨勾閲岀殑騫插緱瀹岀殑浜嬨傝屽洜涓?鐢熸棩鏀誨嚮"鏈夋晥鐨勯檷浣庝簡闇瑕佺┓涓劇殑絀洪棿錛屽皢鍏墮檷浣庝負澶х害1.2*2^64鎴?.2*2^80錛屾墍浠ワ紝寮烘姉鍐茬獊鎬ф槸鍐沖畾Hash綆楁硶瀹夊叏鎬х殑鍏抽敭銆?/p>
鍦∟IST鏂扮殑 Advanced Encryption Standard (AES)涓紝浣跨敤浜嗛暱搴︿負128銆?92銆?56bit 鐨勫瘑閽ワ紝鍥犳鐩稿簲鐨勮璁′簡 SHA256銆丼HA384銆丼HA512錛屽畠浠皢鎻愪緵鏇村ソ鐨勫畨鍏ㄦс?/p>
Hash綆楁硶鍦ㄤ俊鎭畨鍏ㄦ柟闈㈢殑搴旂敤涓昏浣撶幇鍦ㄤ互涓嬬殑3涓柟闈細
1) 鏂囦歡鏍¢獙 鎴戜滑姣旇緝鐔熸倝鐨勬牎楠岀畻娉曟湁濂囧伓鏍¢獙鍜孋RC鏍¢獙錛岃繖2縐嶆牎楠屽茍娌℃湁鎶楁暟鎹鏀圭殑鑳藉姏錛屽畠浠竴瀹氱▼搴︿笂鑳芥嫻嬪茍綰犳鏁版嵁浼犺緭涓殑淇¢亾璇爜錛屼絾鍗翠笉鑳介槻姝㈠鏁版嵁鐨勬伓鎰忕牬鍧忋?/p>
MD5 Hash綆楁硶鐨?鏁板瓧鎸囩汗"鐗規э紝浣垮畠鎴愪負鐩墠搴旂敤鏈騫挎硾鐨勪竴縐嶆枃浠跺畬鏁存ф牎楠屽拰(Checksum)綆楁硶錛屼笉灝慤nix緋葷粺鏈夋彁渚涜綆梞d5 checksum鐨勫懡浠ゃ傚畠甯歌鐢ㄥ湪涓嬮潰鐨?縐嶆儏鍐典笅錛?/p>
絎竴鏄枃浠朵紶閫佸悗鐨勬牎楠岋紝灝嗗緱鍒扮殑鐩爣鏂囦歡璁$畻 md5 checksum錛屼笌婧愭枃浠剁殑md5 checksum 姣斿錛岀敱涓よ?md5 checksum 鐨勪竴鑷存э紝鍙互浠庣粺璁′笂淇濊瘉2涓枃浠剁殑姣忎竴涓爜鍏冧篃鏄畬鍏ㄧ浉鍚岀殑銆傝繖鍙互媯楠屾枃浠朵紶杈撹繃紼嬩腑鏄惁鍑虹幇閿欒錛屾洿閲嶈鐨勬槸鍙互淇濊瘉鏂囦歡鍦ㄤ紶杈撹繃紼嬩腑鏈鎭舵剰綃℃敼銆備竴涓緢鍏稿瀷鐨勫簲鐢ㄦ槸ftp鏈嶅姟錛岀敤鎴峰彲浠ョ敤鏉ヤ繚璇佸嬈℃柇鐐圭畫浼狅紝鐗瑰埆鏄粠闀滃儚绔欑偣涓嬭澆鐨勬枃浠剁殑姝g‘鎬с?/p>
鏇村嚭鑹茬殑瑙e喅鏂規硶鏄墍璋撶殑浠g爜絳懼悕錛屾枃浠剁殑鎻愪緵鑰呭湪鎻愪緵鏂囦歡鐨勫悓鏃訛紝鎻愪緵瀵規枃浠禜ash鍊肩敤鑷繁鐨勪唬鐮佺鍚嶅瘑閽ヨ繘琛屾暟瀛楃鍚嶇殑鍊鹼紝鍙婅嚜宸辯殑浠g爜絳懼悕璇佷功銆傛枃浠剁殑鎺ュ彈鑰呬笉浠呰兘楠岃瘉鏂囦歡鐨勫畬鏁存э紝榪樺彲浠ヤ緷鎹嚜宸卞璇佷功絳懼彂鑰呭拰璇佷功鎷ユ湁鑰呯殑淇′換紼嬪害錛屽喅瀹氭槸鍚︽帴鍙楄鏂囦歡銆傛祻瑙堝櫒鍦ㄤ笅杞借繍琛屾彃浠跺拰java灝忕▼搴忔椂錛屼嬌鐢ㄧ殑灝辨槸榪欐牱鐨勬ā寮忋?/p>
絎簩鏄敤浣滀繚瀛樹簩榪涘埗鏂囦歡緋葷粺鐨勬暟瀛楁寚綰癸紝浠ヤ究媯嫻嬫枃浠剁郴緇熸槸鍚︽湭緇忓厑璁哥殑琚慨鏀廣備笉灝戠郴緇熺鐞?緋葷粺瀹夊叏杞歡閮芥彁渚涜繖涓鏂囦歡緋葷粺瀹屾暣鎬ц瘎浼扮殑鍔熻兘錛屽湪緋葷粺鍒濆瀹夎瀹屾瘯鍚庯紝寤虹珛瀵規枃浠剁郴緇熺殑鍩虹鏍¢獙鍜屾暟鎹簱錛屽洜涓烘暎鍒楁牎楠屽拰鐨勯暱搴﹀緢灝忥紝瀹冧滑鍙互鏂逛究鐨勮瀛樻斁鍦ㄥ閲忓緢灝忕殑瀛樺偍浠嬭川涓娿傛鍚庯紝鍙互瀹氭湡鎴栨牴鎹渶瑕侊紝鍐嶆璁$畻鏂囦歡緋葷粺鐨勬牎楠屽拰錛屼竴鏃﹀彂鐜頒笌鍘熸潵淇濆瓨鐨勫兼湁涓嶅尮閰嶏紝璇存槑璇ユ枃浠跺凡緇忚闈炴硶淇敼錛屾垨鑰呮槸琚梾姣掓劅鏌擄紝鎴栬呰鏈ㄩ┈紼嬪簭鏇夸唬銆俆ripWire灝辨彁渚涗簡涓涓綾誨簲鐢ㄧ殑鍏稿瀷渚嬪瓙銆?/p>
鏇村畬緹庣殑鏂規硶鏄嬌鐢?MAC"銆?MAC" 鏄竴涓笌Hash瀵嗗垏鐩稿叧鐨勫悕璇嶏紝鍗充俊鎭壌鏉冪爜(Message Authority Code)銆傚畠鏄笌瀵嗛挜鐩稿叧鐨凥ash鍊鹼紝蹇呴』鎷ユ湁璇ュ瘑閽ユ墠鑳芥楠岃Hash鍊箋傛枃浠剁郴緇熺殑鏁板瓧鎸囩汗涔熻浼氳淇濆瓨鍦ㄤ笉鍙俊浠葷殑浠嬭川涓婏紝鍙鎷ユ湁璇ュ瘑閽ヨ呮彁渚涘彲閴村埆鎬с傚茍涓斿湪鏂囦歡鐨勬暟瀛楁寚綰規湁鍙兘闇瑕佽淇敼鐨勬儏鍐典笅錛屽彧鏈夊瘑閽ョ殑鎷ユ湁鑰呭彲浠ヨ綆楀嚭鏂扮殑鏁e垪鍊鹼紝鑰屼紒鍥劇牬鍧忔枃浠跺畬鏁存ц呭嵈涓嶈兘寰楅炪?/p>
2) 鏁板瓧絳懼悕 Hash 綆楁硶涔熸槸鐜頒唬瀵嗙爜浣撶郴涓殑涓涓噸瑕佺粍鎴愰儴鍒嗐傜敱浜庨潪瀵圭О綆楁硶鐨勮繍綆楅熷害杈冩參錛屾墍浠ュ湪鏁板瓧絳懼悕鍗忚涓紝鍗曞悜鏁e垪鍑芥暟鎵紨浜嗕竴涓噸瑕佺殑瑙掕壊銆?/p>
鍦ㄨ繖縐嶇鍚嶅崗璁腑錛屽弻鏂瑰繀欏諱簨鍏堝崗鍟嗗ソ鍙屾柟閮芥敮鎸佺殑Hash鍑芥暟鍜岀鍚嶇畻娉曘?/p>
絳懼悕鏂瑰厛瀵硅鏁版嵁鏂囦歡榪涜璁$畻鍏舵暎鍒楀鹼紝鐒跺悗鍐嶅寰堢煭鐨勬暎鍒楀肩粨鏋?-濡侻d5鏄?6涓瓧鑺傦紝SHA1鏄?0瀛楄妭錛岀敤闈炲縐扮畻娉曡繘琛屾暟瀛楃鍚嶆搷浣溿傚鏂瑰湪楠岃瘉絳懼悕鏃訛紝涔熸槸鍏堝璇ユ暟鎹枃浠惰繘琛岃綆楀叾鏁e垪鍊鹼紝鐒跺悗鍐嶇敤闈炲縐扮畻娉曢獙璇佹暟瀛楃鍚嶃?/p>
瀵?Hash 鍊鹼紝鍙堢О"鏁板瓧鎽樿"榪涜鏁板瓧絳懼悕錛屽湪緇熻涓婂彲浠ヨ涓轟笌瀵規枃浠舵湰韜繘琛屾暟瀛楃鍚嶆槸絳夋晥鐨勩傝屼笖榪欐牱鐨勫崗璁繕鏈夊叾浠栫殑浼樼偣錛?/p>
棣栧厛錛屾暟鎹枃浠舵湰韜彲浠ュ悓瀹冪殑鏁e垪鍊煎垎寮淇濆瓨錛岀鍚嶉獙璇佷篃鍙互鑴辯鏁版嵁鏂囦歡鏈韓鐨勫瓨鍦ㄨ岃繘琛屻?/p>
鍐嶈咃紝鏈変簺鎯呭喌涓嬬鍚嶅瘑閽ュ彲鑳戒笌瑙e瘑瀵嗛挜鏄悓涓涓紝涔熷氨鏄錛屽鏋滃涓涓暟鎹枃浠剁鍚嶏紝涓庡鍏惰繘琛岄潪瀵圭О鐨勮В瀵嗘搷浣滄槸鐩稿悓鐨勬搷浣滐紝榪欐槸鐩稿綋鍗遍櫓鐨勶紝鎭舵剰鐨勭牬鍧忚呭彲鑳藉皢涓涓瘯鍥鵑獥浣犲皢鍏惰В瀵嗙殑鏂囦歡錛屽厖褰撲竴涓姹備綘絳懼悕鐨勬枃浠跺彂閫佺粰浣犮傚洜姝わ紝鍦ㄥ浠諱綍鏁版嵁鏂囦歡榪涜鏁板瓧絳懼悕鏃訛紝鍙湁瀵瑰叾Hash鍊艱繘琛岀鍚嶆墠鏄畨鍏ㄧ殑銆?/p>
3) 閴存潈鍗忚 濡備笅鐨勯壌鏉冨崗璁張琚О浣?鎸戞垬--璁よ瘉妯″紡錛氬湪浼犺緭淇¢亾鏄彲琚睛鍚紝浣嗕笉鍙綃℃敼鐨勬儏鍐典笅錛岃繖鏄竴縐嶇畝鍗曡屽畨鍏ㄧ殑鏂規硶銆?/p>
闇瑕侀壌鏉冪殑涓鏂癸紝鍚戝皢琚壌鏉冪殑涓鏂瑰彂閫侀殢鏈轟覆錛?#8220;鎸戞垬”錛夛紝琚壌鏉冩柟灝嗚闅忔満涓插拰鑷繁鐨勯壌鏉冨彛浠ゅ瓧涓璧瘋繘琛?Hash 榪愮畻鍚庯紝榪旇繕閴存潈鏂癸紝閴存潈鏂瑰皢鏀跺埌鐨凥ash鍊間笌鍦ㄥ繁绔敤璇ラ殢鏈轟覆鍜屽鏂圭殑閴存潈鍙d護瀛楄繘琛?Hash 榪愮畻鐨勭粨鏋滅浉姣旇緝錛?#8220;璁よ瘉”錛夛紝濡傜浉鍚岋紝鍒欏彲鍦ㄧ粺璁′笂璁や負瀵規柟鎷ユ湁璇ュ彛浠ゅ瓧錛屽嵆閫氳繃閴存潈銆?/p>
POP3鍗忚涓氨鏈夎繖涓搴旂敤鐨勫吀鍨嬩緥瀛愶細
S: +OK POP3 server ready <1896.697170952@dbc.mtview.ca.us> C: APOP mrose c4c9334bac560ecc979e58001b3e22fb S: +OK maildrop has 1 message (369 octets) 鍦ㄤ笂闈㈢殑涓孌礟OP3鍗忚浼氳瘽涓紝鍙屾柟閮藉叡浜殑瀵圭О瀵嗛挜錛堥壌鏉冨彛浠ゅ瓧錛夋槸tanstaaf錛屾湇鍔″櫒鍙戝嚭鐨勬寫鎴樻槸<1896.697170952@dbc.mtview.ca.us>錛屽鎴風瀵規寫鎴樼殑搴旂瓟鏄疢D5("<1896.697170952@dbc.mtview.ca.us>tanstaaf") = c4c9334bac560ecc979e58001b3e22fb錛岃繖涓紜殑搴旂瓟浣垮叾閫氳繃浜嗚璇併?/p>
鏁e垪綆楁硶闀挎湡浠ユ潵涓鐩村湪璁$畻鏈虹瀛︿腑澶ч噺搴旂敤錛岄殢鐫鐜頒唬瀵嗙爜瀛︾殑鍙戝睍錛屽崟鍚戞暎鍒楀嚱鏁板凡緇忔垚涓轟俊鎭畨鍏ㄩ鍩熶腑涓涓噸瑕佺殑緇撴瀯妯″潡錛屾垜浠湁鐞嗙敱娣卞叆鐮旂┒鍏惰璁$悊璁哄拰搴旂敤鏂規硶銆?/p>
]]>C++闅忔満鏁扮敓鎴愭柟娉曪紙杞澆) http://m.shnenglu.com/softko/archive/2010/12/02/135228.htmleircQ eircQ Thu, 02 Dec 2010 00:42:00 GMT http://m.shnenglu.com/softko/archive/2010/12/02/135228.html http://m.shnenglu.com/softko/comments/135228.html http://m.shnenglu.com/softko/archive/2010/12/02/135228.html#Feedback 0 http://m.shnenglu.com/softko/comments/commentRss/135228.html http://m.shnenglu.com/softko/services/trackbacks/135228.html
鍘熸枃 http://www.cnblogs.com/finallyliuyu/archive/2010/10/11/1848130.html
涓銆丆++涓笉鑳戒嬌鐢╮andom()鍑芥暟
==================================================================================
鏈枃鐢遍潚鏉懼師鍒涘茍渚滸PL-V2鍙婂叾鍚庣畫鐗堟湰鍙戞斁錛岃漿杞借娉ㄦ槑鍑哄涓斿簲鍖呭惈鏈澹版槑銆?/p>
C++涓父鐢╮and()鍑芥暟鐢熸垚闅忔満鏁幫紝浣嗕弗鏍兼剰涔変笂鏉ヨ鐢熸垚鐨勫彧鏄吉闅忔満鏁幫紙pseudo-random integral
number錛夈傜敓鎴愰殢鏈烘暟鏃墮渶瑕佹垜浠寚瀹氫竴涓瀛愶紝濡傛灉鍦ㄧ▼搴忓唴寰幆錛岄偅涔堜笅涓嬈$敓鎴愰殢鏈烘暟鏃惰皟鐢ㄤ笂涓嬈$殑緇撴灉浣滀負縐嶅瓙銆備絾濡傛灉鍒嗕袱嬈℃墽琛岀▼搴忥紝閭d箞鐢?
浜庣瀛愮浉鍚岋紝鐢熸垚鐨?#8220;闅忔満鏁?#8221;涔熸槸鐩稿悓鐨勩?/p>
鍦ㄥ伐紼嬪簲鐢ㄦ椂錛屾垜浠竴鑸皢緋葷粺褰撳墠鏃墮棿(Unix鏃墮棿)浣滀負縐嶅瓙錛岃繖鏍風敓鎴愮殑闅忔満鏁版洿鎺ヨ繎浜庡疄闄呮剰涔変笂鐨勯殢鏈烘暟銆傜粰涓涓嬩緥紼嬪涓嬶細
#include <iostream> #include <ctime> #include <cstdlib> using namespace std;
int main() { double random(double,double); srand(unsigned(time(0))); for(int icnt = 0; icnt != 10; ++icnt) cout << "No." << icnt+1 << ": " << int(random(0,10))<< endl; return 0; }
double random(double start, double end) { return start+(end-start)*rand()/(RAND_MAX + 1.0); } /* 榪愯緇撴灉 * No.1: 3 * No.2: 9 * No.3: 0 * No.4: 9 * No.5: 5 * No.6: 6 * No.7: 9 * No.8: 2 * No.9: 9 * No.10: 6 */ 鍒╃敤榪欑鏂規硶鑳戒笉鑳藉緱鍒板畬鍏ㄦ剰涔変笂鐨勯殢鏈烘暟鍛紵浼間箮9鏈夌偣澶氬摝錛熷嵈娌℃湁1,4,7錛燂紒鎴戜滑鏉ュ仛涓涓鐜囧疄楠岋紝鐢熸垚1000涓囦釜闅忔満鏁幫紝鐪?-9榪?0涓暟鍑虹幇鐨勯鐜囨槸涓嶆槸澶ц嚧鐩稿悓鐨勩傜▼搴忓涓嬶細 #include <iostream> #include <ctime> #include <cstdlib> #include <iomanip> using namespace std;
int main() { double random(double,double); int a[10] = {0}; const int Gen_max = 10000000; srand(unsigned(time(0))); for(int icnt = 0; icnt != Gen_max; ++icnt) switch(int(random(0,10))) { case 0: a[0]++; break; case 1: a[1]++; break; case 2: a[2]++; break; case 3: a[3]++; break; case 4: a[4]++; break; case 5: a[5]++; break; case 6: a[6]++; break; case 7: a[7]++; break; case 8: a[8]++; break; case 9: a[9]++; break; default: cerr << "Error!" << endl; exit(-1); } for(int icnt = 0; icnt != 10; ++icnt)
cout << icnt << ": " << setw(6) <<
setiosflags(ios::fixed) << setprecision(2) <<
double(a[icnt])/Gen_max*100 << "%" << endl; return 0; }
double random(double start, double end) { return start+(end-start)*rand()/(RAND_MAX + 1.0); } /* 榪愯緇撴灉 * 0: 10.01% * 1: 9.99% * 2: 9.99% * 3: 9.99% * 4: 9.98% * 5: 10.01% * 6: 10.02% * 7: 10.01% * 8: 10.01% * 9: 9.99% */ 鍙煡鐢ㄨ繖縐嶆柟娉曞緱鍒扮殑闅忔満鏁版槸婊¤凍緇熻瑙勫緥鐨勩?/p>
鍙︼細鍦↙inux涓嬪埄鐢℅CC緙栬瘧紼嬪簭錛屽嵆浣挎垜鎵ц浜?000000嬈¤繍綆楋紝鏄惁灝唕andom鍑芥暟瀹氫箟浜唅nline鍑芥暟浼間箮瀵圭▼搴忔病鏈変換浣曞獎鍝嶏紝鏈夌悊鐢辯浉淇★紝GCC宸茬粡涓烘垜浠仛浜嗕紭鍖栥備絾鏄啣鍐ヤ箣涓垜鍙堣寰楄鍋歩nline浼樺寲寰楀姞O3鎵嶈...
涓嶈錛屼簬鏄垜浠妸寰幆嬈℃暟鏀逛負10浜挎錛岀敤time鍛戒護鏌ョ湅鎵ц鏃墮棿錛?br>chinsung@gentoo ~/workspace/test/Debug $ time ./test 0: 10.00% 1: 10.00% 2: 10.00% 3: 10.00% 4: 10.00% 5: 10.00% 6: 10.00% 7: 10.00% 8: 10.00% 9: 10.00%
real 2m7.768s user 2m4.405s sys 0m0.038schinsung@gentoo ~/workspace/test/Debug $ time ./test 0: 10.00% 1: 10.00% 2: 10.00% 3: 10.00% 4: 10.00% 5: 10.00% 6: 10.00% 7: 10.00% 8: 10.00% 9: 10.00%
real 2m7.269s user 2m4.077s sys 0m0.025s
鍓嶄竴嬈′負榪涜inline浼樺寲鐨勬儏褰紝鍚庝竴嬈′負娌℃湁浣渋nline浼樺寲鐨勬儏褰紝涓ゆ緇撴灉鐩稿樊涓嶅ぇ錛岀敋鑷沖悇欏規寚鏍囧悗鑰呰繕瑕佸ソ涓浜涳紝涓嶇煡鏄綍緙樼敱...
=================================================================================
random鍑芥暟涓嶆槸ANSI C鏍囧噯錛屼笉鑳藉湪gcc,vc絳夌紪璇戝櫒涓嬬紪璇戦氳繃銆?
鍙敼鐢–++涓嬬殑rand鍑芥暟鏉ュ疄鐜般?nbsp; 1銆丆++鏍囧噯鍑芥暟搴撴彁渚涗竴闅忔満鏁扮敓鎴愬櫒rand錛岃繑鍥?錛峈AND_MAX涔嬮棿鍧囧寑鍒嗗竷鐨勪吉闅忔満鏁存暟銆?
RAND_MAX蹇呴』鑷沖皯涓?2767銆俽and()鍑芥暟涓嶆帴鍙楀弬鏁幫紝榛樿浠?涓虹瀛愶紙鍗寵搗濮嬪鹼級銆?
闅忔満鏁扮敓鎴愬櫒鎬繪槸浠ョ浉鍚岀殑縐嶅瓙寮濮嬶紝鎵浠ュ艦鎴愮殑浼殢鏈烘暟鍒椾篃鐩稿悓錛屽け鍘諱簡闅忔満鎰忎箟銆傦紙浣嗚繖鏍蜂究浜庣▼搴忚皟璇曪級 2銆丆++涓彟涓鍑芥暟srand錛堬級錛屽彲浠ユ寚瀹氫笉鍚岀殑鏁幫紙鏃犵鍙鋒暣鏁板彉鍏冿級涓虹瀛愩備絾鏄鏋滅瀛愮浉鍚岋紝浼殢鏈烘暟鍒椾篃鐩稿悓銆備竴涓姙娉曟槸璁╃敤鎴瘋緭鍏ョ瀛愶紝浣嗘槸浠嶇劧涓嶇悊鎯熾? 3銆?姣旇緝鐞嗘兂鐨勬槸鐢ㄥ彉鍖栫殑鏁幫紝姣斿鏃墮棿鏉ヤ綔涓洪殢鏈烘暟鐢熸垚鍣ㄧ殑縐嶅瓙銆?time鐨勫兼瘡鏃舵瘡鍒婚兘涓嶅悓銆傛墍浠ョ瀛愪笉鍚岋紝鎵浠ワ紝浜х敓鐨勯殢鏈烘暟涔熶笉鍚屻? // C++闅忔満鍑芥暟錛圴C program錛? #include <stdio.h> #include <iostream> #include <time.h> using namespace std; #define MAX 100 int main(int argc, char* argv[]) { srand( (unsigned)time( NULL ) );//srand()鍑芥暟浜х敓涓涓互褰撳墠鏃墮棿寮濮嬬殑闅忔満縐嶅瓙.搴旇鏀懼湪for絳夊驚鐜鍙ュ墠闈?涓嶇劧瑕佸緢闀挎椂闂寸瓑寰? 銆銆 for (int i=0;i<10;i++) 銆銆 cout<<rand()%MAX<<endl;//MAX涓烘渶澶у鹼紝鍏墮殢鏈哄煙涓?~MAX-1 銆銆 return 0; } 浜屻乺and()鐨勭敤娉? rand()涓嶉渶瑕佸弬鏁幫紝瀹冧細榪斿洖涓涓粠0鍒版渶澶ч殢鏈烘暟鐨勪換鎰忔暣鏁幫紝鏈澶ч殢鏈烘暟鐨勫ぇ灝忛氬父鏄浐瀹氱殑涓涓ぇ鏁存暟銆?榪欐牱錛屽鏋滀綘瑕佷駭鐢?~10鐨?0涓暣鏁幫紝鍙互琛ㄨ揪涓猴細 銆銆int N = rand() % 11; 榪欐牱錛孨鐨勫煎氨鏄竴涓?~10鐨勯殢鏈烘暟錛屽鏋滆浜х敓1~10錛屽垯鏄繖鏍鳳細 銆銆int N = 1 + rand() % 10; 銆銆鎬葷粨鏉ヨ錛屽彲浠ヨ〃紺轟負錛? 銆銆a + rand() % n
鍏朵腑鐨刟鏄搗濮嬪鹼紝n鏄暣鏁扮殑鑼冨洿銆?銆銆a + rand() % (b-a+1)
灝辮〃紺恒锝侊綖锝備箣闂寸殑涓涓殢鏈烘暟鑻ヨ0~1鐨勫皬鏁幫紝鍒欏彲浠ュ厛鍙栧緱0~10鐨勬暣鏁幫紝鐒跺悗鍧囬櫎浠?0鍗沖彲寰楀埌闅忔満鍒板崄鍒嗕綅鐨?0涓殢鏈哄皬鏁幫紝鑻ヨ寰楀埌闅忔満鍒扮櫨
鍒嗕綅鐨勯殢鏈哄皬鏁幫紝鍒欓渶瑕佸厛寰楀埌0~100鐨?0涓暣鏁幫紝鐒跺悗鍧囬櫎浠?00錛屽叾瀹冩儏鍐典緷姝ょ被鎺ㄣ? 閫氬父rand()浜х敓鐨勯殢鏈烘暟鍦ㄦ瘡嬈¤繍琛岀殑鏃跺欓兘鏄笌涓婁竴嬈$浉鍚岀殑錛岃繖鏄湁鎰忚繖鏍瘋璁$殑錛屾槸涓轟簡渚夸簬紼嬪簭鐨勮皟璇曘傝嫢瑕佷駭鐢熸瘡嬈′笉鍚岀殑闅忔満鏁幫紝鍙互浣跨敤srand( seed )鍑芥暟榪涜闅忔満鍖栵紝闅忕潃seed鐨勪笉鍚岋紝灝辮兘澶熶駭鐢熶笉鍚岀殑闅忔満鏁般? 濡傚ぇ瀹舵墍璇達紝榪樺彲浠ュ寘鍚玹ime.h澶存枃浠訛紝鐒跺悗浣跨敤srand(time(0))鏉ヤ嬌鐢ㄥ綋鍓嶆椂闂翠嬌闅忔満鏁板彂鐢熷櫒闅忔満鍖栵紝榪欐牱灝卞彲浠ヤ繚璇佹瘡涓ゆ榪愯鏃跺彲浠ュ緱鍒頒笉鍚岀殑闅忔満鏁板簭鍒?鍙涓ゆ榪愯鐨勯棿闅旇秴榪?縐?銆?/p>
]]> trie鏍?-璇﹁В http://m.shnenglu.com/softko/archive/2010/11/26/134701.htmleircQ eircQ Fri, 26 Nov 2010 01:48:00 GMT http://m.shnenglu.com/softko/archive/2010/11/26/134701.html http://m.shnenglu.com/softko/comments/134701.html http://m.shnenglu.com/softko/archive/2010/11/26/134701.html#Feedback 0 http://m.shnenglu.com/softko/comments/commentRss/134701.html http://m.shnenglu.com/softko/services/trackbacks/134701.html 鏂囩珷浣滆咃細 yx_th000 鏂囩珷鏉ユ簮錛?/span>C herish_yimi ( http://www.cnblogs.com/cherish_yimi/ ) 杞澆璇鋒敞鏄庯紝璋㈣阿鍚堜綔銆?br> 鍏抽敭璇嶏細trie trie鏍?鏁版嵁緇撴瀯
鍓嶅嚑澶╁涔犱簡騫舵煡闆嗗拰trie鏍戯紝榪欓噷鎬葷粨涓涓媡rie銆?br> 鏈枃璁ㄨ涓媯墊渶綆鍗曠殑trie鏍戯紝鍩轟簬鑻辨枃26涓瓧姣嶇粍鎴愮殑瀛楃涓詫紝璁ㄨ鎻掑叆瀛楃涓層佸垽鏂墠緙鏄惁瀛樺湪銆佹煡鎵懼瓧絎︿覆絳夊熀鏈搷浣滐紱鑷充簬trie鏍戠殑鍒犻櫎鍗曚釜鑺傜偣瀹炲湪鏄皯瑙侊紝鏁呭湪姝や笉鍋氳瑙c?/span>
l Trie 鍘熺悊
Trie 鐨勬牳蹇冩濇兂鏄┖闂存崲鏃墮棿銆傚埄鐢ㄥ瓧絎︿覆鐨勫叕鍏卞墠緙鏉ラ檷浣庢煡璇㈡椂闂寸殑寮閿浠ヨ揪鍒版彁楂樻晥鐜囩殑鐩殑銆?/span>
l Trie 鎬ц川
濂藉浜鴻trie鐨勬牴鑺傜偣涓嶅寘鍚換浣曞瓧絎︿俊鎭紝鎴戞墍涔犳儻鐨則rie鏍硅妭鐐瑰嵈鏄寘鍚俊鎭殑錛岃屼笖璁や負榪欐牱涔熸柟渚匡紝涓嬮潰璇翠竴涓嬪畠鐨勬ц川 (鍩轟簬鏈枃鎵璁ㄨ鐨勭畝鍗晅rie鏍?
1. 瀛楃鐨勭鏁板喅瀹氭瘡涓妭鐐圭殑鍑哄害錛屽嵆branch鏁扮粍(絀洪棿鎹㈡椂闂存濇兂)
2. branch 鏁扮粍鐨勪笅鏍囦唬琛ㄥ瓧絎︾浉瀵逛簬a鐨勭浉瀵逛綅緗?/span>
3. 閲囩敤鏍囪鐨勬柟娉曠‘瀹氭槸鍚︿負瀛楃涓層?/span>
4. 鎻掑叆銆佹煡鎵劇殑澶嶆潅搴﹀潎涓篛(len),len涓哄瓧絎︿覆闀垮害
l Trie 鐨勭ず鎰忓浘
濡傚浘鎵紺猴紝璇rie鏍戝瓨鏈塧bc銆乨銆乨a銆乨da鍥涗釜瀛楃涓詫紝濡傛灉鏄瓧絎︿覆浼氬湪鑺傜偣鐨勫熬閮ㄨ繘琛屾爣璁般傛病鏈夊悗緇瓧絎︾殑branch鍒嗘敮鎸囧悜NULL l Trie Trie 鐨勪紭鐐逛婦渚?/span>
宸茬煡n涓敱灝忓啓瀛楁瘝鏋勬垚鐨勫鉤鍧囬暱搴︿負10鐨勫崟璇?鍒ゆ柇鍏朵腑鏄惁瀛樺湪鏌愪釜涓蹭負鍙︿竴涓覆鐨勫墠緙瀛愪覆銆備笅闈㈠姣?縐嶆柟娉曪細
1. 鏈瀹規槗鎯沖埌鐨勶細鍗充粠瀛楃涓查泦涓粠澶村線鍚庢悳錛岀湅姣忎釜瀛楃涓叉槸鍚︿負瀛楃涓查泦涓煇涓瓧絎︿覆鐨勫墠緙錛屽鏉傚害涓篛(n^2)銆?/span>
2. 浣跨敤hash錛氭垜浠敤hash瀛樹笅鎵鏈夊瓧絎︿覆鐨勬墍鏈夌殑鍓嶇紑瀛愪覆銆傚緩绔嬪瓨鏈夊瓙涓瞙ash鐨勫鏉傚害涓篛(n*len)銆傛煡璇㈢殑澶嶆潅搴︿負O(n)* O(1)= O(n)銆?/span>
3. 浣?
鐢╰rie錛氬洜涓哄綋鏌ヨ濡傚瓧絎︿覆abc鏄惁涓烘煇涓瓧絎︿覆鐨勫墠緙鏃訛紝鏄劇劧浠,c,d....絳変笉鏄互a寮澶寸殑瀛楃涓插氨涓嶇敤鏌ユ壘浜嗐傛墍浠ュ緩绔媡rie鐨勫鏉?
搴︿負O(n*len)錛岃屽緩绔?鏌ヨ鍦╰rie涓槸鍙互鍚屾椂鎵ц鐨勶紝寤虹珛鐨勮繃紼嬩篃灝卞彲浠ユ垚涓烘煡璇㈢殑榪囩▼錛宧ash灝變笉鑳藉疄鐜拌繖涓姛鑳姐傛墍浠ユ葷殑澶嶆潅搴︿負
O(n*len)錛屽疄闄呮煡璇㈢殑澶嶆潅搴﹀彧鏄疧(len)銆?br>
瑙i噴涓涓?
hash涓轟粈涔堜笉鑳藉皢寤虹珛涓庢煡璇㈠悓鏃舵墽琛岋紝渚嬪鏈変覆錛?11錛?11456杈撳叆錛屽鏋滆鍚屾椂鎵ц寤虹珛涓庢煡璇紝榪囩▼灝辨槸鏌ヨ911錛屾病鏈夛紝鐒跺悗瀛樺叆9銆?
91銆?11錛屾煡璇?11456錛屾病鏈夌劧鍚庡瓨鍏?114銆?1145銆?11456錛岃岀▼搴忔病鏈夎蹇嗗姛鑳斤紝騫朵笉鐭ラ亾911鍦ㄨ緭鍏ユ暟鎹腑鍑虹幇榪囥傛墍浠ョ敤
hash蹇呴』鍏堝瓨鍏ユ墍鏈夊瓙涓詫紝鐒跺悗for寰幆鏌ヨ銆?/span>
鑰宼rie鏍戜究鍙?
浠ワ紝瀛樺叆911鍚庯紝宸茬粡璁板綍911涓哄嚭鐜扮殑瀛楃涓詫紝鍦ㄥ瓨鍏?11456鐨勮繃紼嬩腑灝辮兘鍙戠幇鑰岃緭鍑虹瓟妗堬紱鍊掕繃鏉ヤ害鍙互錛屽厛瀛樺叆911456錛屽湪瀛樺叆911鏃訛紝
褰撴寚閽堟寚鍚戞渶鍚庝竴涓?鏃訛紝紼嬪簭浼氬彂鐜拌繖涓?宸茬粡瀛樺湪錛岃鏄?11蹇呭畾鏄煇涓瓧絎︿覆鐨勫墠緙錛岃鎬濇兂鏄垜鍦ㄥ仛pku涓婄殑3630涓彂鐜扮殑錛岃瑙佹湰鏂囬厤濂楃殑“鍏?
闂ㄧ粌涔?#8221;銆?/span>
l Trie 鐨勭畝鍗曞疄 鐜?鎻掑叆銆佹煡 璇?
Code 1 2 #include < iostream > 3 using namespace std; 4 5 const int branchNum = 26 ; // 澹版槑甯擱噺 6 int i; 7 8 struct Trie_node 9 { 10 bool isStr; // 璁板綍姝ゅ鏄惁鏋勬垚涓涓覆銆?/span>11 Trie_node * next[branchNum]; // 鎸囧悜鍚勪釜瀛愭爲鐨勬寚閽?涓嬫爣0-25浠h〃26瀛楃 12 Trie_node():isStr( false ) 13 { 14 memset(next,NULL,sizeof (next)); 15 }16 } ; 17 18 class Trie 19 { 20 public : 21 Trie();22 void insert( const char * word); 23 bool search( char * word); 24 void deleteTrie(Trie_node * root); 25 private : 26 Trie_node* root; 27 }; 28 29 Trie::Trie()30 { 31 root = new Trie_node(); 32 }33 34 void Trie::insert( const char * word) 35 { 36 Trie_node * location = root; 37 while ( * word) 38 { 39 if (location -> next[ * word - ' a ' ] == NULL) // 涓嶅瓨鍦ㄥ垯寤虹珛 40 { 41 Trie_node * tmp = new Trie_node(); 42 location-> next[ * word - ' a ' ] = tmp; 43 } 44 location = location -> next[ * word - ' a ' ]; // 姣忔彃鍏ヤ竴姝ワ紝鐩稿綋浜庢湁涓涓柊涓茬粡榪囷紝鎸囬拡瑕佸悜涓嬬Щ鍔?/span>45 word ++ ; 46 } 47 location-> isStr = true ; // 鍒拌揪灝鵑儴,鏍囪涓涓覆 48 } 49 50 bool Trie::search( char * word) 51 { 52 Trie_node * location = root; 53 while ( * word && location) 54 { 55 location = location -> next[ * word - ' a ' ]; 56 word++ ; 57 }58 return (location != NULL && location -> isStr); 59 }60 61 void Trie::deleteTrie(Trie_node * root) 62 { 63 for (i = 0 ; i < branchNum; i ++ ) 64 { 65 if (root -> next[i] != NULL) 66 { 67 deleteTrie(root-> next[i]); 68 }69 }70 delete root;71 }72 73 void main() // 綆鍗曟祴璇?/span>74 { 75 Trie t;76 t.insert(" a " ); 77 t.insert(" abandon " ); 78 char * c = " abandoned " ; 79 t.insert(c);80 t.insert(" abashed " ); 81 if (t.search( " abashed " )) 82 printf(" true\n " ); 83 }
]]>甯哥敤鍑芥暟鐨勬簮鐮佸疄鐜?/title> http://m.shnenglu.com/softko/archive/2010/08/23/124416.htmleircQ eircQ Mon, 23 Aug 2010 06:42:00 GMT http://m.shnenglu.com/softko/archive/2010/08/23/124416.html http://m.shnenglu.com/softko/comments/124416.html http://m.shnenglu.com/softko/archive/2010/08/23/124416.html#Feedback 0 http://m.shnenglu.com/softko/comments/commentRss/124416.html http://m.shnenglu.com/softko/services/trackbacks/124416.html ;***************************************************************************************************************
; strlen returns the length of a null-terminated string in
bytes, not including the null byte itself.
; Algorithm:
; int strlen (const char * str)
; {
; int length = 0;
;
; while( *str++ )
; ++length;
;
; return( length );
; }
;***************************************************************************************************************
; memcpy() copies a source memory buffer to a destination
buffer.
; Overlapping buffers are not treated specially, so
propogation may occur.
; Algorithm:
; void * memcpy(void * dst, void * src, size_t count)
; {
; void * ret = dst;
; /*
; * copy from lower addresses to higher addresses
; */
; while (count--)
; *dst++ = *src++;
;
; return(ret);
; }
;***************************************************************************************************************
; memmove() copies a source memory buffer to a destination
memory buffer.
; This routine recognize overlapping buffers to avoid
propogation.
; For cases where propogation is not a problem, memcpy() can
be used.
; Algorithm:
; void * memmove(void * dst, void * src, size_t count)
; {
; void * ret = dst;
; if (dst <= src || dst >= (src + count)) {
; /*
; * Non-Overlapping Buffers
; * copy from lower addresses to higher
addresses
; */
; while (count--)
; *dst++ = *src++;
; }
; else {
; /*
; * Overlapping Buffers
; * copy from higher addresses to lower
addresses
; */
; dst += count - 1;
; src += count - 1;
;
; while (count--)
; *dst-- = *src--;
; }
;
; return(ret);
; }
;***************************************************************************************************************
int strcmp(const char *str1,const char *str2)
{
while((*str1==*str2)&&(*str1))
{
str1++;
str2++;
}
if((*str1==*str2)&&(!*str1)) //Same strings
return 0;
else if((*str1)&&(!*str2)) //Same but str1 longer
return -1;
else if((*str2)&&(!*str1)) //Same but str2 longer
return 1;
else
return((*str1>*str2)?-1:1);
}
;***************************************************************************************************************
char *strstr1(const char *str1, const char *str2)
{
char *cp = (char *)str1; //type transfer
char *s1, *s2;
if(!str2)
return (char *)str1;
while (cp)
{
s1 = cp;
s2 = (char *)str2;
while( !s1 && !s2 && !(*s1-*s2))
{
s1++, s2++;
}
if(!s2)
return cp;
else
cp++;
}
return NULL;
}
;***************************************************************************************************************
*char *_itoa, *_ltoa, *_ultoa(val, buf, radix) - convert binary int
to ASCII string
static void __cdecl xtoa (unsigned long val, char *buf, unsigned
radix, int is_neg )
{
char *p; /* pointer to traverse string */
char *firstdig; /* pointer to first digit */
char temp; /* temp char */
unsigned digval; /* value of digit */
p = buf;
if (is_neg) {
/* negative, so output '-' and negate */
*p++ = '-';
val = (unsigned long)(-(long)val);
}
firstdig = p; /* save pointer to first digit */
do {
digval = (unsigned) (val % radix);
val /= radix; /* get next digit */
/* convert to ascii and store */
if (digval > 9)
*p++ = (char) (digval - 10 + 'a'); /* a letter */
else
*p++ = (char) (digval + '0'); /* a digit */
} while (val > 0);
/* We now have the digit of the number in the buffer, but in
reverse
order. Thus we reverse them now. */
*p-- = '\0'; /* terminate string; p points to last
digit */
do {
temp = *p;
*p = *firstdig;
*firstdig = temp; /* swap *p and *firstdig */
--p;
++firstdig; /* advance to next two digits */
} while (firstdig < p); /* repeat until halfway */
}
char * __cdecl _itoa ( int val, char *buf, int radix )
{
if (radix == 10 && val < 0)
xtoa((unsigned long)val, buf, radix, 1);
else
xtoa((unsigned long)(unsigned int)val, buf, radix, 0);
return buf;
}
char * __cdecl _ltoa ( long val, char *buf, int radix )
{
xtoa((unsigned long)val, buf, radix, (radix == 10 &&
val < 0));
return buf;
}
;***************************************************************************************************************
*long atol(char *nptr) - Convert string to long. Overflow is not
detected.
long __cdecl _tstol(const _TCHAR *nptr )
{
int c; /* current char */
long total; /* current total */
int sign; /* if '-', then negative, otherwise
positive */
while ( _istspace((int)(_TUCHAR)*nptr) )
++nptr; /* skip whitespace */
c = (int)(_TUCHAR)*nptr++;
sign = c; /* save sign indication */
if (c == _T('-') || c == _T('+'))
c = (int)(_TUCHAR)*nptr++; /* skip sign */
total = 0;
while ( (c = _tchartodigit(c)) != -1 ) {
total = 10 * total + c; /* accumulate digit */
c = (_TUCHAR)*nptr++; /* get next char */
}
if (sign == '-')
return -total;
else
return total; /* return result, negated if necessary
*/
}
int __cdecl _tstoi( const _TCHAR *nptr )
{
return (int)_tstol(nptr);
}
;***************************************************************************************************************
;performs a byteswap on an unsigned integer.
unsigned short __cdecl _byteswap_ushort(unsigned short i)
{
unsigned short j;
j = (i << 8) ;
j += (i >> 8) ;
return j;
}
unsigned long __cdecl _byteswap_ulong(unsigned long i)
{
unsigned int j;
j = (i << 24);
j += (i << 8) & 0x00FF0000;
j += (i >> 8) & 0x0000FF00;
j += (i >> 24);
return j;
}
;***************************************************************************************************************
*char *bsearch() - do a binary search on an array
*Entry:
* const char *key - key to search for const char *base -
base of sorted array to search unsigned int num - number of *elements
in array unsigned int width - number of bytes per element int
(*compare)() - pointer to function that compares two
*array elements, returning neg when #1 < #2, pos when #1 > #2,
and 0 when they are equal. Function is passed pointers to two
*array elements.
*Exit:
* if key is found: returns pointer to occurrence of key in
array
* if key is not found:returns NULL
void * __cdecl bsearch ( REG4 const void *key, const void *base,
size_t num, size_t width, int (__cdecl *compare)(const void *, const
void *) )
{
REG1 char *lo = (char *)base;
REG2 char *hi = (char *)base + (num - 1) * width;
REG3 char *mid;
size_t half;
int result;
while (lo <= hi)
if (half = num / 2)
{
mid = lo + (num & 1 ? half : (half - 1))
* width;
if (!(result = (*compare)(key,mid)))
return(mid);
else if (result < 0)
{
hi = mid - width;
num = num & 1 ? half : half-1;
}
else {
lo = mid + width;
num = half;
}
}
else if (num)
return((*compare)(key,lo) ? NULL : lo);
else
break;
return(NULL);
}
;***************************************************************************************************************
void __cdecl _tmakepath (register _TSCHAR *path, const _TSCHAR
*drive, const _TSCHAR *dir,
const _TSCHAR *fname, const _TSCHAR *ext )
{
register const _TSCHAR *p;
/* copy drive */
if (drive && *drive) {
*path++ = *drive;
*path++ = _T(':');
}
/* copy dir */
if ((p = dir) && *p) {
do {
*path++ = *p++;
}while (*p);
if (*(p-1) != _T('/') && *(p-1) != _T('\\'))
{
*path++ = _T('\\');
}
}
/* copy fname */
if (p = fname) {
while (*p) {
*path++ = *p++;
}
}
/* copy ext, including 0-terminator - check to see if a '.'
needs to be inserted. */
if (p = ext) {
if (*p && *p != _T('.')) {
*path++ = _T('.');
}
while (*path++ = *p++)
;
}
else {
/* better add the 0-terminator */
*path = _T('\0');
}
}
]]> 涓ゅ崟鍚戦摼琛ㄧ浉浜?/title> http://m.shnenglu.com/softko/archive/2010/08/18/123811.htmleircQ eircQ Wed, 18 Aug 2010 03:26:00 GMT http://m.shnenglu.com/softko/archive/2010/08/18/123811.html http://m.shnenglu.com/softko/comments/123811.html http://m.shnenglu.com/softko/archive/2010/08/18/123811.html#Feedback 0 http://m.shnenglu.com/softko/comments/commentRss/123811.html http://m.shnenglu.com/softko/services/trackbacks/123811.html 2. /* 鍔熻兘錛氭眰涓や釜鍗曢摼琛ㄦ槸鍚︾浉浜ゅ拰浜ょ偣*/ 3. /* 杞澆鑷狢SDN鍗氬 * / 4. /* 鏃ユ湡錛?010/03/29 */ 5. /***********************************/ 6. 7. 8. Node* find(Node* head1,Node* head2) 9. { 10. Node *p1=head1,*p2=head2; 11. int m=0,n=0; 12. while(p1)//O(len1) 13. { 14. p1=p1->next; 15. m++; 16. } 17. while(p2)//O(len2) 18. { 19. p2=p2->next; 20. n++; 21. } 22. p1=head1; 23. p2=head2; 24. 25. if(m>n) 26. { 27. for(i=0;i<m-n;i++) 28. p1=p1->next; 29. } 30. else 31. { 32. for(i=0;i<n-m;i++) 33. p2=p2->next; 34. }//O(abs(len1-len2)) 35. while(p1!=p2) 36. { 37. p1=p1->next; 38. p2=p2->next; 39. }//O(min(len1,len2)) 40. return p1; 41. }
]]> c涓庢眹緙栵紝浠ュ強宓屽叆寮忓伐紼嬪笀搴旀敞鎰忕殑闂 http://m.shnenglu.com/softko/archive/2010/07/25/121229.htmleircQ eircQ Sun, 25 Jul 2010 03:43:00 GMT http://m.shnenglu.com/softko/archive/2010/07/25/121229.html http://m.shnenglu.com/softko/comments/121229.html http://m.shnenglu.com/softko/archive/2010/07/25/121229.html#Feedback 0 http://m.shnenglu.com/softko/comments/commentRss/121229.html http://m.shnenglu.com/softko/services/trackbacks/121229.html c涓庢眹緙栵紝浠ュ強宓屽叆寮忓伐紼嬪笀搴旀敞鎰忕殑闂
浜虹敓鍝茬悊涓庣粡楠?/a>
2007-07-25 13:31:04
闃呰41
璇勮
瀛楀彿錛?span class="ul sep fc04">澶?/span>涓?/span>灝?/span>
銆姹囩紪鍜宑鍚屾牱閲嶈錛岀浉浜掗厤鍚堬紝緙轟竴涓嶅彲錛?
銆銆姹囩紪鐨勯噸瑕佹э細
鈼?甯姪浣犱粠鏍規湰涓婂交搴曞拰瀹屽叏浜嗚В鑺墖鐨勭粨鏋勫拰鎬ц兘錛屼互鍙婂伐浣滃師鐞嗭紝濡備綍浣跨敤銆? 鈼?鍦ㄥ皬鐨勮姱鐗囦笂瀹炵幇灝忕殑緋葷粺銆? 鈼?緋葷粺鐨勮皟璇曘傚敖綆′綘浣跨敤浜嗛珮綰ц璦錛屽湪璋冭瘯涓彲浠ュ府鍔╀綘浜嗚ВC浠g爜鐨勬ц兘鍜岀壒鐐癸紝鐢氳嚦鎵懼埌浣跨敤寮鍙戝鉤鍙版湰韜殑BUG銆? 鈼?緙栧啓鏃跺簭瑕佹眰涓ユ牸鐨勪唬鐮侊紝瀹炵幇涓浜涢珮綰ц璦涓嶆槗瀹炵幇鐨勫姛鑳姐?
銆銆灝嗗嚭鐗堢殑AVR128鐨勪功閲岄潰錛岀浜旂珷涓富浣跨敤C浣滀負緋葷粺寮鍙戣璁¤璦錛岃繖鏄洜涓篗128鐨勯熷害楂橈紝鍐呴儴鏈?K鐨凴AM錛?28KFLASH錛?
閫傚悎浜庡疄鐜版瘮杈冮珮綰х殑搴旂敤錛屾墍浠ラ噰鐢–璇█浣滀負緋葷粺寮鍙戠殑璁捐璇█銆備絾浣滀負寮鍙戝伐紼嬪笀鏉ヨ錛岀啛鎮塎128鐨勭粨鏋勫拰搴旂敤鍘熺悊錛屽熀鏈帉鎻″畠鐨勬眹緙栬璦鏄繀瑕佺殑
鍩虹銆?
銆銆浠庣洰鍓嶇殑鎶鏈拰搴旂敤鍙戝睍鏉ョ湅錛屽紜歡宸ョ▼甯堢殑瑕佹眰瓚婃潵瓚婇珮銆備互鎴戠殑瑙傜偣錛屼綔涓哄崟鐗囨満鍜屽祵鍏ュ紡緋葷粺寮鍙戠湡姝g殑楂樻墜錛屽簲鍏峰浠ヤ笅鍑犱釜鏂歸潰鐨勭患鍚堣兘鍔涳細
鈼?紜歡銆傛ā鎷熴佹暟瀛楃數璺殑闆勫帤鍩虹錛屼簡瑙h窡韙幇鍦ㄥ競鍦轟笂鐨勫悇縐嶅厓鍣ㄤ歡鐨勫簲鐢ㄥ拰鍙戝睍錛岃兘澶熻繘琛屽彲闈犮佸畬鍠勭殑鐢佃礬璁捐浠ュ強PCB鐨勮璁°? 鈼?
杞歡銆備笉浠呴渶瑕佺簿閫氭眹緙栬璦錛屼篃瑕佺簿閫欳璇█錛岃鏈夊ソ鐨勫崟鐗囨満緋葷粺紼嬪簭璁捐鐞嗗康鍜岃兘鍔涳紝瀛︽牎涓鐨勯偅浜涘垎鏀粨鏋勩佸驚鐜粨鏋勭瓑鍩烘湰鍘熺悊榪滆繙涓嶅錛佽鏈夊熀鏈殑
鏁版嵁緇撴瀯鐨勭煡璇嗐傚惁鍒欎綘濡備綍璁捐瀹炵幇USB HOST璇籙鐩樼殑鎺ュ彛錛熷浣曞疄鐜板祵鍏ュ紡WEB緋葷粺錛熶互鍙婂浣曚嬌鐢ㄧ湡姝d簡瑙e拰浣跨敤RTOS錛? 鈼?鍏峰璁$畻鏈虹綉緇滃拰鏁板瓧閫氫俊鐨勫熀紜鐭ヨ瘑錛屼粠鏍規湰涓婄啛鎮夊拰浜嗚В鍚勭鍗忚鐨勬瀯閫犲拰瀹炵幇錛屽錛歎ART銆丷S232銆丼PI銆両2C銆乁SB銆両EEE802銆乀CP/IP絳夈? 鈼?璁$畻鏈哄簲鐢ㄧ殑楂樻墜銆? 鈼?鐔熺粌闃呰鑻辨枃璧勬枡銆? 鈼?鐑埍鍜屽枩嬈㈢數瀛愭妧鏈紝鍏峰鍒昏嫤綺劇銆佽笍韙忓疄瀹烇紝涓嶅紕铏氫綔鍋囷紝涓嶆誕韜併傚鍔ㄦ墜錛屽嫟瀹炶返銆傛湁寮虹儓鐨勪笓涓氬拰閽葷爺綺劇銆傛渶鍚庝竴鏉℃渶閲嶈錛?
]]> 青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
亚洲男人第一av网站 |
久久久久久亚洲综合影院红桃
|
亚洲欧美日韩在线不卡 |
最新日韩在线视频 |
黄色成人av在线 |
国模精品一区二区三区色天香 |
国产精品中文字幕欧美 |
国产精品一区二区在线观看网站
|
亚洲裸体在线观看 |
亚洲精品欧美在线 |
99re热精品 |
亚洲午夜久久久久久久久电影网 |
99在线精品免费视频九九视 |
夜夜爽夜夜爽精品视频 |
在线亚洲国产精品网站 |
亚洲一区在线免费 |
久久久99国产精品免费 |
久久在线91 |
亚洲国产一区二区视频 |
亚洲精品乱码久久久久 |
亚洲视频欧美视频 |
久久精品国产精品 |
欧美交受高潮1 |
国产精品超碰97尤物18 |
国内精品久久久久影院 日本资源 |
亚洲经典一区 |
亚洲女人天堂av |
美女91精品 |
亚洲乱码国产乱码精品精可以看 |
亚洲综合精品四区 |
麻豆9191精品国产 |
国产精品久久亚洲7777 |
一区二区在线视频观看 |
中文在线资源观看网站视频免费不卡
|
免费成人网www |
一区二区三区精品在线 |
久久精品视频va |
欧美丝袜一区二区三区 |
亚洲第一偷拍 |
欧美一二区视频 |
亚洲第一黄网 |
午夜在线精品偷拍 |
欧美日韩免费网站 |
亚洲国产婷婷 |
久久男人资源视频 |
亚洲免费在线观看 |
亚洲欧美一区二区在线观看 |
欧美成在线观看 |
亚洲第一在线 |
久久久久久久网 |
亚洲影院免费 |
国产精品卡一卡二卡三 |
亚洲视频在线观看视频 |
最新日韩在线 |
蜜月aⅴ免费一区二区三区
|
欧美国产日产韩国视频 |
黄色成人在线网址 |
久久男人av资源网站 |
久久av一区二区三区 |
国产一区二区0 |
久久成人资源 |
亚洲一区二区三区高清 |
国产精品亚洲综合 |
亚洲免费在线视频 |
亚洲你懂的在线视频 |
国产精品国产三级国产aⅴ浪潮 |
亚洲精品在线视频 |
欧美成人亚洲成人 |
久久国产天堂福利天堂 |
一区二区三区成人精品 |
欧美色综合天天久久综合精品 |
亚洲高清在线精品 |
久久久久久9 |
亚洲欧美日韩电影 |
亚洲毛片在线看 |
性做久久久久久久免费看 |
国产精品jizz在线观看美国 |
99视频精品 |
91久久精品www人人做人人爽 |
久久天堂精品 |
在线播放亚洲 |
另类激情亚洲 |
久久久久久亚洲精品中文字幕 |
欧美激情精品久久久久久久变态
|
欧美日韩国产色综合一二三四 |
1204国产成人精品视频 |
久久精品久久99精品久久 |
亚洲一级在线观看 |
国产精品亚洲综合天堂夜夜
|
开元免费观看欧美电视剧网站 |
香蕉免费一区二区三区在线观看 |
国产精品久久久久久久app |
亚洲欧美一级二级三级 |
亚洲永久免费观看 |
久久影院午夜论 |
国产伦精品一区二区三区高清版 |
午夜国产精品视频免费体验区 |
国产精品99久久久久久久vr |
媚黑女一区二区 |
午夜精品福利在线 |
亚洲国产日韩欧美在线99 |
欧美一区二区三区精品 |
久久久蜜桃一区二区人 |
日韩一级黄色av |
亚洲精选在线观看 |
国产视频亚洲精品 |
91久久久久久久久 |
影音先锋欧美精品 |
欧美日韩三级电影在线 |
久久偷窥视频 |
av成人黄色 |
欧美屁股在线 |
亚洲国产日韩欧美 |
欧美激情小视频 |
久久久精品一品道一区 |
亚洲高清在线观看 |
亚洲一区二区在线视频 |
91久久在线视频 |
国产一区二区高清不卡 |
欧美一区二区私人影院日本 |
亚洲免费一在线 |
久久久xxx |
久久国产乱子精品免费女 |
一区二区三区回区在观看免费视频 |
亚洲一二三区视频在线观看 |
久久精品官网 |
亚洲一二三四久久 |
久久视频一区二区 |
最新热久久免费视频 |
亚洲精品国久久99热 |
久久精品91久久香蕉加勒比 |
国产精品美女一区二区在线观看 |
美女久久一区 |
国产九区一区在线 |
中文在线一区 |
亚洲欧美视频一区二区三区 |
国产精品男女猛烈高潮激情 |
国产午夜精品理论片a级大结局
|
一区二区毛片 |
亚洲欧美日韩精品久久亚洲区
|
欧美不卡激情三级在线观看 |
欧美精品在线网站 |
狂野欧美性猛交xxxx巴西 |
国产精品久久久久久久久 |
亚洲成人直播 |
一区二区三区在线观看国产 |
亚洲视频免费在线 |
狠狠色综合一区二区 |
欧美一区不卡 |
欧美一区二区三区日韩 |
欧美日韩在线精品一区二区三区 |
欧美 日韩 国产 一区 |
国产一区二三区 |
亚洲一区3d动漫同人无遮挡 |
亚洲婷婷国产精品电影人久久 |
欧美成人精品在线播放 |
欧美成人tv |
伊伊综合在线 |
久久久久久久综合日本 |
久久免费视频网站 |
国产一区二区三区无遮挡 |
欧美高清视频一区二区三区在线观看 |
欧美性开放视频 |
欧美成人亚洲 |
亚洲人www |
久久在线观看视频 |
欧美高清日韩 |
亚洲另类自拍 |
欧美激情视频一区二区三区免费 |
欧美a级一区 |
亚洲黄色毛片 |
欧美成人在线免费视频 |
亚洲高清av |
一区二区三区四区国产 |
欧美日韩一区二区免费视频 |
一本大道av伊人久久综合 |
亚洲女同性videos |
欧美日韩国产在线 |
亚洲最新色图 |
久久国产黑丝 |
亚洲激情在线 |
国产精品激情 |
欧美亚洲专区 |
欧美激情视频在线免费观看 欧美视频免费一
|
久久久www成人免费毛片麻豆 |
亚洲韩国精品一区 |
加勒比av一区二区 |
久久精品盗摄 |
一区二区三区.www |
亚洲欧美日韩精品久久 |
亚洲欧美日韩在线一区 |
国产精品视频男人的天堂 |
亚洲欧美日韩国产 |
欧美国产激情 |
亚洲一二区在线 |
国内精品99 |
欧美日本视频在线 |
久久精品国产久精国产爱 |
亚洲精品黄色 |
欧美尤物一区 |