锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
鐪嬪埌瑙夊緱鏈夌偣鎰忓懗鐨勫湴鏂規渶濂藉鎯蟲兂鏉ラ緳鍘昏剦錛屾兂鎯充負浠涔堬紝鍥犱負绱ф帴鐫鐨勪細鏄護浜烘儕鍠滅殑瑙h銆?澶氬啓鍐欎功涓婄殑浠g爜錛屾劅瑙変笉閿欙紙鍐欏畬浠ュ悗鎰熻蹇樹簡寰堜箙鐨勭畻娉曞張閲嶆柊鍥炴潵浜嗭級銆?姣忕珷鐨?#8220;鍘熺悊”閮ㄥ垎鏄珮搴︽х殑姒傛嫭錛?涔犻"鏄緢濂界殑錛屼績浣夸綘鍘繪濊冿紝鍋氫範棰樻槸寰堟湁蹇呰鐨勶紝涓嶆兂“嫻垂”鏃墮棿鍘?#8220;鍋氫範棰?#8221;浜嗙殑緇撴灉鍙兘鏄互鍚庝細鐢ㄦ洿澶氱殑鏃墮棿鎵嶈兘鎯蟲竻榪欎簺闂錛岃繕鏈変笉瑕佸彧鎯崇潃鐪嬬瓟妗堬紝浣犱細寰堝け鏈涳紝鍥犱負鏈変簺棰樼洰鏄病鏈夌瓟妗堢殑 :) ps錛氭湁寰堝闈㈣瘯棰樻潵鑷叾涓殑涔犻
瀵逛竴浜涚畻娉曟湁浜嗘洿濂界殑鐞嗚В錛屼篃璁告槸鐪嬬浜岄亶鐨勫師鍥狅紝涔熻鏄粠涓嶅悓鐨勮搴︾湅浼氭湁涓嶅悓鐨勬晥鏋滐紙鎵浠?/span>濂戒功瑕佸璇伙紝姣忛噸璇諱竴嬈′細鏈夋柊鐨勬敹鑾?/span>錛夈傛瘮濡傦細鍦ㄥ姩鎬佽鍒掔畻娉曢噷錛岀▼搴忓彲浠ョ敤閫掑綊綆楁硶鍜岀敤琛ㄦ牸鍖栨柟娉曞疄鐜般傞掑綊綆楁硶鐨勭己鐐規槸錛氭湁閮ㄥ垎鍊間細琚噸綆楋紝瑙e喅鏂規硶鏄敤涓涓暟緇勬妸宸茬粡璁$畻榪囩殑鍊煎瓨璧鋒潵錛岃繖鏍峰氨涓嶄細閲嶅璁$畻浜嗐傝〃鏍煎寲鐨勭畻娉曟槸錛氭病鏈夐掑綊綆楁硶濂界悊瑙o紝瑙e喅鍔炴硶鏄細鍦ㄤ唬鐮佸紑澶村姞涓敞閲婏紝娉ㄩ噴灝辨槸閭e嚑鏉¢掑綊瑙勫垯錛屽ぇ涓嶄簡鍐嶅姞涓婅鏄?#8220;姝や唬鐮佺敤鐨勬槸鍔ㄦ佽鍒?#8221;銆?ps錛歭inux閲宒iff鐨勫熀鏈畻娉曞氨鏄姩鎬佽鍒掑惂錛屾劅瑙夊拰鏈闀垮叕鍏卞瓙涓茬被浼鹼紝鑷繁瀹炵幇浜嗕竴涓?diff.pl)(鏇存柊錛氫粖澶╁湪緗戜笂鐪嬪埌浜嗗叧浜巇iff鐢ㄥ姩鎬佽鍒掑疄鐜扮殑淇℃伅錛?a title="Dynamic programming Creative Exercises 2 Unix diff" >Dynamic programming Creative Exercises 2 Unix diff, 鍏舵簮鐮佷負diff.java 錛屾瘮鎴戠殑濂戒簡N澶氬嶏紝鎵撳嵃緇撴灉鐨勯偅孌典唬鐮佺殑鎬濇兂鐩稿綋濂斤紒浠g爜綆媧佹竻娣呫傚彟澶栵紝鎴戝紑濮嬭寰楃敤琛ㄦ牸鍖栫殑鏂規硶瀹炵幇鍔ㄦ佽鍒掓洿甯呬簡銆?nbsp; 錛嶏紞2011.7.22 )銆?br />
璇昏繖鏈功鏀惰幏寰堝錛屽垪涓懼嚑涓惂錛?br /> 1. 涔﹂噷鐨?#8220;紼嬪簭楠岃瘉” 鎶鏈緢闈犺氨錛岃紼嬪簭鐪嬭搗鏉ユ竻鏅版槗鎳傦紝榪樿兘浠庝竴瀹氱▼搴︿繚璇佹紜с?br /> 2. “鍝ㄥ叺”(Sentinel value )琚嚑嬈$敤鍒頒簡錛屾劅瑙夎繕涓嶉敊錛屼唬鐮佺湅璧鋒潵鏇寸畝鍗曚簡錛岃繕鑳藉甫鏉ヤ竴鐐瑰皬灝忔晥鐜囥?br /> 3. 鏃剁┖鎶樹腑涓庡弻璧€傚湪鍘熷璁捐鐨勭畻娉曞茍闈炴渶浣蟲柟妗堟椂錛岄氳繃鏀瑰杽綆楁硶鏄彲浠ヨ揪鍒板弻璧㈢殑銆?br /> 4. 鐢ㄥ彧鍒嗛厤涓涓緝澶у唴瀛樺潡鐨勬柟妗堟潵鏇挎崲閫氱敤鍐呭瓨鍒嗛厤錛岃繖鏍峰氨娑堥櫎浜嗗緢澶?寮閿杈冨ぇ鐨勮皟鐢紝鑰屼笖涔熶嬌鐢ㄧ┖闂寸殑鍒╃敤鏇村姞鏈夋晥銆?br /> 5. 鏁板妯″瀷鐨勫緩绔嬫槸寰堥噸瑕佺殑銆傛妸鏁癮鎯蟲垚鐢ㄩ泦鍚圼a,a + 1)琛ㄧず鏄9绔犱腑浜屽垎鏌ユ壘浠g爜璋冧紭鐨勬牳蹇冩濇兂銆傛暟緇勬棆杞偅涓畻娉曚篃瀹炲湪鏄おnb浜嗐?br /> 6. 涓涓啓寰楀緢濂界殑浠g爜錛屽湪鍑犱釜鍦版柟鐪嬪埌榪囷紝鎬諱細蹇橈紝榪欐璁頒笅錛?br />
鍚戦摼琛ㄦ彃鍏ュ厓绱狅細
insert(v)
for(p = &head; (*p)->val < t; p = &((*p)->next))
;
if (*p)->val == v
return
*p = new node(v, *p)
涓嬮潰鏄垜鍐欑殑錛?br /> insert(v)
p = head;
while(p->val < t)
p = p->next
if(p-> val == v)
return
q = node(t,p)
if(p == head)
head = q;
鍙﹀錛屾敞鎰忓埌涓鏈功錛?a title="綆楁硶璁捐涓庡垎鏋愬熀紜">綆楁硶璁捐涓庡垎鏋愬熀紜錛?錛岀敤涓嶅悓鐨勬柟寮忚綆楁硶錛屾妸綆楁硶鎸夊叾閫氱敤紼嬪害鎻愬嚭浜?涓渶鍩烘湰鐨勭畻娉曟濇兂錛欱rute force 錛?Divide & conquer 錛?Decrease & conquer錛?nbsp; Transform & conquer銆?
鏈鍚庢憳褰曚竴涓?絎?鐗堣穻 閲岀粰鐨勫嚑涓緩璁?
1. 瑙e喅姝g‘鐨勯棶棰樸?棣栧厛褰誨簳鐞嗚В闂
2. 鎺㈢儲鎵鏈夊彲鑳界殑瑙e喅鏂規
3. 瑙傚療鏁版嵁
4. 浣跨敤綺楃暐浼扮畻
5. 寰楃敤瀵圭О鎬?
6. 鍒╃敤緇勪歡鍋氳璁?
7. 寤虹珛鍘熷瀷
8. 蹇呰鏃惰繘琛屾潈琛?
9. 淇濇寔綆鍗?
10.榪芥眰浼樼編
]]>
榪欐湰涔︾殑鎴愪功鏂瑰紡寰堟湁鎰忔濄備綔鑰呴潪甯稿枩嬈rogram錛屼互鑷充簬灝嗚繖鏈功鐨勫啓浣滃綋鎴愪簡杞歡宸ョ▼錛屽叏涔︾敤plain text鍐欐垚錛屼互soruce code(搴?璇ユ槸浠栦滑鑷繁鍙戞槑鐨勯鍩熻璦DSL~)鐨勬柟寮忕粍緇囪屾垚錛岀敤浠栦滑鑷繁鍐欐垚鐨勫伐鍏穊uild涓涓嬪悗灝辨垚浜嗘涔︼紝鐩鎬俊浠栦滑涔熶互鏌愮鐗堟湰綆$悊宸ュ叿瀵規榪涜浜嗙鐞?鏂逛究鏌ョ湅鐗堟湰涔嬮棿鐨勫彉鍖栫瓑)錛屽茍瀵逛功涓殑code榪涜浜嗗崟鍏冩祴璇曘?br> 鎯沖儚涓涓嬩粬浠庝箞鍐欎功鐨?鍊熺敤HTML鐨勬牸寮忕寽鎯充竴涓?:
<Body>
shell娓告垙
<Code>/home/Dave/game.sh</Code>
</Body>
Test鏃朵細鑷姩嫻嬭瘯涔︿腑鐨勭▼搴忥紝濡傦細game.sh錛汢uild涔嬪悗鏈功渚垮畬鎴愪簡錛堜功涓殑code鏂囦歡浼氳嚜鍔ㄨ鍏ワ級銆?br>
榪欑湡鏄竴涓緢鎴愬姛鐨?#8220;欏圭洰”錛?br> * Automate Everything.
* 濡傛灉闇瑕侊紝鍒欒璁¤嚜宸辯殑灝忚璦
Perl鏈変竴涓綔瑙i噴鍣ㄧ殑鍖?a title="http://search.cpan.org/~dconway/Parse-RecDescent-1.965001/lib/Parse/RecDescent.pm" >http://search.cpan.org/~dconway/Parse-RecDescent-1.965001/lib/Parse/RecDescent.pm
* Fix Broken Windows
--Fix small thing,Then big thing will not happen.
* Don't repeat yourself(DRY)
-- code duplication
瑙e喅鏂規硶: 鍋氭垚鍑芥暟錛屾ā鍧楋紝綾伙紱閲囩敤code generators錛涢噰鐢ㄥ厓紼嬪簭璁捐(The art of metaprogramming:http://www.ibm.com /developerworks/linux/library/l-metaprog1.html)錛涢噰鐢ㄨ璁℃ā寮?浣滆呰寰楅噰鐢ㄦā寮忔湁鍙兘鎶婇棶棰樺紕澶嶆潅)錛沜onvertions錛沵etaphors錛?br> -- Project Duplication
Fix by producing procduts; Fix with data-driven designs.
* Do one thing better.
綆鍗曪紝浣庤﹀悎銆?
* Do Nothing Twice.
* 浠g爜涔嬪墠錛屾祴璇曞厛琛屻?br> * 閫夋嫨濂界殑緙栫爜宸ュ叿鑳芥湁鏁堝湴鎻愰珮鏁堢巼錛岄伩鍏嶇紪鐮佷腑鐨勫皬閿欒銆?br>
]]>
璁$畻鏈哄師鏈氨璇ヤ粠浜嬬畝鍗曢噸澶嶇殑宸ヤ綔銆傚彧瑕佹妸浠誨姟鎸囨淳緇欏畠浠紝瀹冧滑灝卞彲浠ヤ竴閬嶅張涓閬嶆涓嶈蛋鏍峰湴閲嶅鎵ц錛岃屼笖閫熷害寰堝揩銆備絾鍗寸粡甯哥湅瑙佷竴縐嶅鎬殑鐜拌薄錛氫漢浠湪璁$畻鏈轟笂鎵嬪伐鍋氫竴浜涚畝鍗曢噸澶嶇殑宸ヤ綔錛岃綆楁満鍒欏湪澶у崐澶滈噷鎵庡爢闂茶亰鍙栫瑧榪欎簺鍙滅殑鐢ㄦ埛銆?br>
鎴戜滑搴旇鍒╃敤浣滀負紼嬪簭鍛樼殑浼樺娍錛岀湅鍒版櫘閫氱敤鎴鋒棤娉曠湅鍒扮殑涓滆タ錛屽煿鍏籰arry鎵璇寸殑“鎳掓儼錛屾ヨ簛鍜屽偛鎱?#8221;璁╄綆楁満楂樻晥鍦頒負鎴戜滑宸ヤ綔錛氬懡浠よ鏄姝ゅ湴楂樻晥錛岃剼鏈槸濡傛鍦版柟渚匡紝琛旀帴涓や釜灝忓伐鍏瘋兘杈懼埌濡傛紲炲鐨勬晥鏋溿傘傘?br>
鍙や唬鍝蹭漢
1. 浜氶噷鏂寰風殑“浜嬬墿鏈川鎬ц川鍜岄檮灞炴ц川”鐞嗚錛氳嚧鍔涙湰璐ㄥ鏉傛э紝鍘婚櫎闄勫睘澶嶆潅鎬с備綘鐜板湪鎯寵В鍐抽棶棰楢,鍦ㄨВ鍐矨鐨勯棶棰樹腑閬囧埌浜嗛棶棰楤,鎺ョ潃浣犲幓瑙e喅闂B錛屾垙鍓фх殑鏄綘閬囧埌浜嗗緢澶氭帴浜岃繛涓夌殑闂C,D,E錛屾垨鑰呭湪寰堝騫村悗錛岀▼搴忔墠鍑虹幇闂C,D,E錛屽彲鏄綘鐨勬渶鍒濋棶棰樻槸A錛屼笉鏄悧錛烞,C,D絳夌瓑閮芥槸闄勫睘鎬ц川錛屽綋榪欎簺闄勫睘鎬ц川瓚婃潵瓚婂錛岃秺鏉ヨ秺澶嶆潅鐨勬椂鍊欙紝涔熸槸寮濮嬫濊冨彟涓涓В鍐矨鐨勫姙娉曠殑鏃跺欎簡銆?濡傛灉浣滀負瀛︿範錛屽彲浠ヨ瘯鐫鍘昏В鍐抽偅浜涢檮灞炴ц川)
2. 絎涚背鐗規硶鍒欙細浠諱綍涓涓璞℃垨鑰呮柟娉曪紝瀹冨簲璇ュ彧鑳借皟鐢ㄤ笅鍒楀璞★細璇ュ璞℃湰韜紝浣滀負鍙傛暟浼犻掕繘鏉ョ殑瀵硅薄錛屽湪鏂規硶鍐呭垱寤虹殑瀵硅薄銆傝繖涔堝仛鐨勪富瑕佺洰鐨勬槸淇℃伅闅愯棌,鍚屾椂浣跨被鐨勮﹀悎鏇村姞鏉炬暎銆?br>
3. “鍙よ?#8221;鐨勮蔣浠朵紶璇淬備簡瑙e巻鍙叉墠鑳芥洿濂藉湴鍒涢犲巻鍙層傝璇婚偅浜?#8220;鍙よ?#8221;鐨?#8220;瀹濆吀”錛堝銆婄▼搴忓憳淇偧涔嬮亾銆嬨婁漢鏈堢璇濄嬨奡malltalk Best Practice Patterns銆嬶級錛屼細瀛﹀埌寰堝鏈夌敤鐨勪笢瑗匡紝鎴栬浣犱細鍙戝嚭涓鐢熸儕鍙廣?#8220;褰撲綘鐨勮佹澘瑕佹眰浣犱嬌鐢ㄤ竴涓綆璐ㄩ噺鐨勪唬鐮佸簱鏃訛紝涓嶉渶瑕佸湪宕╂簝涓挰鐗欏垏榻匡紝鍛婅瘔浠栵細浣犳“绔欏湪渚忓剴鐨勮偐鑶”涓婄殑闄烽槺涓紝鐒跺悗浠栧氨浼氭槑鐧戒笉浠呬粎鍙湁浣犳墠瑙夊緱閭f槸涓潖涓繪剰銆?#8221;
鎷ユ姳澶氳璦緙栫▼
“姣忎釜璇█閮芥湁鑷繁鎿呴暱鐨勫湴鏂?#8221;錛堟垜鐨勬兂娉曪級銆傛瘮濡俻erl鐗瑰埆閫傚悎鏂囨湰澶勭悊錛岀敤鏉ュ鐞嗙綉欏典篃寰堝ソ錛堟瘯绔熸湁浜涗粠鏈嶅姟鍣ㄤ笂榪斿洖鐨勬暟鎹氨鏄敤perl榪斿洖鐨勶紝鎵浠ョ敤perl涔熶細姣旇緝鍚堥傦級銆?br>
璁$畻鏈鴻璦灝卞儚椴ㄩ奔錛岃鏄繚鎸侀潤姝㈠氨浼氭銆?br>
Java鐨勫垱閫犻兘浠疄闄呬笂鍒涢犱簡涓ゆ牱涓滆タ錛欽ava璇█鍜孞ava騫沖彴銆傚悗鑰呭氨鏄垜浠憜鑴卞巻鍙插寘琚辯殑閫斿緞錛圝ava璇█鐨勭壒鎬у寘鍚簡涓浜涘畠鏈鍙互蹇界暐鐨勪笢瑗匡紝濡侸ava紼嬪簭鍒濆鍖栫殑欏哄簭鍜屼粠0寮濮嬬殑鏁扮粍錛夈傝鍒版湰鏂囨垜鎵嶅紑濮嬬悊瑙e鉤鍙扮殑娣卞埢鎰忎箟銆?br>
涓句袱涓緥瀛愶紙Groovy鍜孞askell錛夎鏄庛?br>
Groovy鏄竴縐嶅紑婧愮殑緙栫▼璇█錛屽畠緇橨ava甯︽潵浜嗗姩鎬佽璦鐨勮娉曞拰鍔熻兘錛屽畠浼氱敓鎴怞ava瀛楄妭鐮侊紝鍥犳鍙互鍦↗ava騫沖彴涓婅繍琛屻傚湪Java涔嬪悗鍗佸騫撮噷嫻幇鍑烘潵鐨勫悇縐嶈璦寰堝ぇ紼嬪簭涓婂獎鍝嶇潃Groovy鐨勮娉曪細Groovy鏀寔瑁呴グ錛岃緝鏉炬暎鐨勭被鍨嬬郴緇燂紝“鐞嗚В”榪唬鐨勯泦鍚堬紝浠ュ強寰堝鐜頒唬緙栫▼璇█鐨勬敼榪涚壒鎬с傝屼笖瀹冨彲浠ョ紪璇戞垚綰鐨凧ava瀛楄妭鐮併傜敤Groovy鍐欐垚鐨勪唬鐮佺畝媧佷笖騫朵笉姣旂敤Java鍐欑殑浠g爜鏁堢巼浣庡灝戯紝鑰屼笖鑳藉厖鍒嗗熺敤Java騫沖彴鐨勪紭鍔褲?br>
Jaskell鏄繍琛屽湪Java騫沖彴涓婄殑Haskell鐗堟湰銆侸askell鎷ユ湁鍑芥暟寮忕▼搴忚璁¤璦鐨勪紭鍔匡細鍑芥暟涓嶆敼鍙樺鐣岀殑鐘舵侊紝綰補鐨勫嚱鏁板紡璇█鍘嬫牴娌℃湁“鍙橀噺”姒傚康錛涘嚱鏁板紡璇█瀵瑰綰跨▼鐨勬敮鎸佹瘮鍛戒護寮忚璦瑕佸己寰楀錛岀敤鍑芥暟寮忚璦鏇村鏄撳啓鍑哄己澹殑綰跨▼瀹夊叏鐨勪唬鐮侊紝瀵瑰茍鍙戞敮鎸佷篃姣旇緝濂斤紙鎴戞兂榪欐槸Erlang嫻佽鐨勫師鍥狅級銆傚悓鏃禞askell涔熻兘鍊熺敤Java騫沖彴鐨勪紭鍔褲?br>
Java騫沖彴鍊熺敤榪欎簺澶氳璦鐗規э紝涓瀹氫細璧板緱鏇村ソ錛岃蛋寰楁洿榪溿備笉榪囷紝鍦ㄥ甫鏉ュソ澶勭殑鍚屾椂錛屼篃甯︽潵浜嗕竴涓棶棰橈細澶氳璦搴旂敤紼嬪簭鏇撮毦楂樺害錛岃В鍐寵繖涓棶棰樻渶綆鍗曠殑鍔炴硶涔熻窡鐜板湪涓鏍鳳細闈犱弗鏍肩殑鍗曞厓嫻嬭瘯鏉ラ伩鍏嶅湪璋冭瘯鍣ㄤ笂嫻垂鏃墮棿銆?br>
澶氳璦寮鍙戦鏍間細鎶婃垜浠甫鍚戦鍩熺壒瀹氳璦(Domain-specific Language,DSL)銆傛垜浠細浠ヤ竴浜涗笓闂ㄧ殑璇█涓哄熀紜錛屽垱閫犲嚭闈炲父鏈夐拡瀵規х殑錛岄潪甯鎬笓娉ㄦ煇涓闂鍩熺殑DSL銆?/span>鎶卞畾涓縐嶉氱敤璇█涓嶆斁鐨勫勾浠e氨蹇粨鏉熶簡錛屾垜浠鍦ㄨ繘鍏ヤ竴涓笓涓氱粏鍒嗙殑鏂版椂浠c傚ぇ瀛︽椂浠g殑Haskell鏁欐潗榪樺湪涔︽灦欏朵笂钂欏皹鍚楋紵璇ョ粰瀹冩幐鎺哥伆浜嗐?br>
ps: 鎴戜滑涔熷彲浠ヤ互C++涓哄熀紜錛屾潵鍒涢犱竴縐岲SL錛屾濊冦?br>
閾炬帴錛?/span> 鍗撴湁鎴愭晥鐨勭▼搴忓憳
]]>