Git
ÌṩÀ´ºÜ¶àµÄ¹¤¾ßÀ´°ïÖúÎÒÃǸĽø¹¤×÷Á÷³Ì¡£ bisect ÃüÁî¾ÍÊÇÆäÖÐÖ®Ò», ËäÈ»ÓÉÓÚʹÓõò»¶à¶ø²»¹ãΪÈËÖª£¬µ«Êǵ±ÄãÏëÖªµÀÒ»¸ö±¾À´ºÃµÄ·ÖÖ§´Óʲôʱºò¿ªÊ¼±ä»µÊ±£¬Ëü¾ÍÄÜÅÉÉÏÓó¡ÁË¡£µ½µ×ÊÇÄÄÒ»´ÎÌá½»°ÑÊÂÇé¸ãÔÒÁËÄØ£¬ÈÃ
bisect À´¸æËßÄã°É¡£
Bisect »ùÓÚ¶þ·Ö²éÕÒËã·¨¡£¸ø¶¨Ò»¸öÓÐÐòµÄÔªËØÐòÁУ¬Ëü»á·µ»ØÒªÄãÒª²éÕÒµÄÔªËØµÄÐòºÅ£¨»òÕ߸æËßÄã¸ÃÔªËØÊÇ·ñÔÚÐòÁÐÖУ©¡£Ëü»ùÓÚÈçϵIJ»±äʽ£ºµ±Äã¶Ô±ÈÍêÒ»¸öÔªËØ£¬Äã¾ÍÄܸù¾Ý±È½ÏµÄ½á¹ûÅׯúµôËü֮ǰ»òÕßÖ®ºóµÄËùÓÐÔªËØ£¨´Ó¶ø´ó´óËõСÏ´βéÕҵķ¶Î§£©¡£
Èç¹ûÄãÓÐÈ¥¹ýͼÊé¹Ý£¬ÄÇÄã¿ÉÄÜ×¢Òâµ½ÁËÿ¸ö×¨ÇøÄÚµÄÊé¼®¶¼Êǰ´×÷ÕßÐÕÃûÀ´ÅÅÐòµÄ¡£±È·½ËµÄãÒªÕÒµÄÒ»±¾ÊéµÄ×÷ÕßµÄÐÕΪ
Martin£¬¶øÄã¸Õ¸Õ¿´µ½Ä³¸öÊé¼ÜÉϵÄ×îºóÒ»±¾ÊéµÄ×÷ÕßµÄÐÕÊÇ F ¿ªÍ·µÄ£¬ÄÇôÄã¾ÍÄÜÈ·¶¨ÄãÒªÕÒµÄÊéÒ»¶¨·ÅÔÚºóÃæµÄij¸öÊé¼ÜÉÏ¡£ÒÀ´Ë·½·¨¼ÌÐøÏ´Σ¬Äã¾ÍÄÜ¿ìËÙµÄËõСËÑË÷·¶Î§Ö±µ½ÕÒµ½ÄãÒªµÄÊéΪֹ¡£
¶þ·Ö²éÕÒ·¨ÒàÊÇÈç´Ë¡£Èç¹ûÄãÏëÔÚÓÐ n ¸öÔªËØµÄÐòÁУ¨ÓÐÐòµÄ£©ÖвéÕÒÔªËØ x£¬ÄãÌô³öµÚ n/2 ¸öÔªËØ²¢½«ÆäÓëÔªËØ
x ±È½Ï¡£Èç¹û x ´ó£¬ÄÇô¾Í¶Ô´Ó n/2+1 µ½ n µÄ×ÓÐòÁÐÖØ¸´ÉÏÊö²½Ö裬·´Ö®£¬¾Í¶Ô´Ó 1 µ½ n/2-1
µÄ×ÓÐòÁÐÖØ¸´ÉÏÊö²½Öè, ÕâÑùÒ»Ö±µÝ¹éÏÂÈ¥¡£ÕâÀï¾ÍÓÐÒ»¸ö ¹ØÓÚ´ËËã·¨µÄÓÐȤµÄÑÝʾ¡£
¶þ·Ö²éÕÒËã·¨ËùÐèµÄ±È½Ï´ÎÊýͨ³£¶¼±ÈÄãɵɵµÄÈ¥ÄÃÐòÁÐÖеÄÿ¸öÔªËØÓë x ±È½ÏËùÐèµÄ±È½Ï´ÎÊýÉٵöࡣÊÂʵ֤Ã÷ÔÚÓÐÐòÐòÁÐÖвéÕÒÔªËØ£¬¶þ·Ö²éÕÒ¸ü¿ì¸üÓÐÓá£
Bisect
Bisect ¾ÍÊÇÀûÓöþ·Ö²éÕÒ·¢À´²éÕÒÔÚÄãµÄijһ·ÖÖ§Öе½µ×ÊÇÄÄÒ»´ÎÌá½»ÒýÈëÁËÌØ¶¨µÄ±ä¸ü¡£
Ê×ÏÈ£¬Ò²ÊÇ×îÆðÂëµÄ£¬ÄãµÃÓа취¼ì²â³öÒ»¸ö¸ø¶¨µÄÌá½»µãÊDz»ÊÇÓÐ bug¡£Í¨³£Äã¿ÉÒÔд¸ö²âÊÔ´úÂ룬Èç¹ûÕâÒ²²»¿ÉÄܵϰ£¬ÄÇÖÁÉÙÄãµÃÓÐÒ»Ìײ½ÖèÀ´Ê¹
bug ÔÙÏÖ³öÀ´¡£
ÓÐÁËÕâÌ×¼ì²â·½·¨£¬Äã¾Í¿ÉÒÔ¿ªÊ¼Óà bisect ²éÕÒÄãµÄÌá½»ÀúÊ·À´ÒÔ×î¿ìµÄËÙ¶È·¢ÏÖÒýÈë bug µÄʱ¼äµãÁË¡£µÈµÈ£¬Ä㻹µÃ×¼±¸ºÃÁ½¸öÌá½»µã£ºÒ»¸öÊÇÄãÈ·¶¨
bug »¹Ã»Óб»ÒýÈëµÄÌá½»µã£¬ÁíÒ»¸öÔòÊÇÈ·¶¨ bug ÒѾÒýÈëÁ˵ÄÌá½»µã£¨ÕâÑù¾ÍËõСÁ˳õʼµÄ²éÕÒ·¶Î§£©¡£ÔÚ
bisect ÃüÁîÉÏ£¬Äã¿ÉÒÔÓùþÏ£Öµ£¨hash£©»òÕß±êÇ©£¨tag£©À´ÒýÓÃÕâÁ½¸öÌá½»µã¡£bisect ²éÕÒʱ£¬²éÕÒ·¶Î§ÀïµÄÌá½»µãҪô±»±ê¼ÇΪºÃµÄ£¨Í¨¹ý²âÊÔ£¬Ã»ÓÐ
bug µÄ£©£¬ÒªÃ´±»±ê¼ÇΪ»µµÄ£¨Í¨²»¹ý²âÊÔ£¬ÓÐ bug µÄ£©¡£
ÉÏͼÑÝʾÁË bisect µÄÖ´Ðв½Ö裨Â̵ãÊǺõÄÌá½»µã£¬ºìµãµÄ¾ÍÊÇ»µµÄ£©£ºbisect ±»ÒªÇóÔÚÌá½»µã
1 µ½ 8 Õâ¸ö·¶Î§ÄÚ²éÕÒÊ×´ÎÒýÈë bug µÄÌá½»µã£¨¿´Í¼Ò»Ä¿ÁËÈ»ÊÇÌá½»µã 6£©£¬ÕâÀïÌá½»µã 1 ºÍ 8
¾ÍÊÇÉ϶ÎÖÐÌá¼°µÄ£¬ÎÒÃÇÐèÒªÊ×ÏÈ×¼±¸ºÃ¸ø bisect ÃüÁîµÄÁ½¸ö£¨Ò»ºÃÒ»»µ£©Ìá½»µã¡£bisect Ê×ÏÈÓõ÷ÓÃÕßÌṩµÄ¼ì²â·½·¨À´²âÊÔ
1 µ½ 8 ÖмäµÄÌá½»µã 4£¬Èç¹ûËüÊǺõģ¨Í¼ÉϵÄÇé¿ö£©£¬ÄÇô bisect ¾ÍËõС·¶Î§ÎªËüÓұߵÄÇøÓò£¬Öظ´ÉÏÊö²½Ö裬·´Ö®£¬ÔòÑ¡ÔñÆä×ó±ßµÄÇøÓòΪеÄËÑË÷·¶Î§¡£Èç´ËµÝ¹éÏÂÈ¥£¬ÔÚÉÏͼµÄÀý×ÓÖУ¬Ö»ÐèÒª
3 ²½¾ÍÈ·¶¨ÁË×ï¿ý»öÊ×ÊÇÌá½»µã 6.
ÎÒÕâÀï´´½¨ÁËÒ»¸ö git ²Ö¿â£¬ÀïÃæ¹²ÓÐ 1024 ¸öÌá½»¼Ç¼£¬Ã¿¸öÌá½»¶¼ÍùÒ»¸öÎı¾ÎļþºóÃæÌí¼ÓÒ»¸öµÝÔöµÄÊý×Ö£¬´Ó
1 µ½ 1024£¬Ò»ÐÐÒ»¸öÊý×Ö¡£ÎÒÃǵÄÈÎÎñÊÇÒªÕÒ³öÊÇÄĸöÌá½»µãÏòÎı¾Îļþ¸½¼ÓÁË 1013 Õâ¸öÊý×Ö£¨ÎÒÃǼٶ¨Ëü¾ÍÊÇÒ»¸ö
bug£©¡£
Ê×ÏÈ£¬ÎÒÃǶ¨³öÒ»¸ö·½·¨À´ÅжÏÎļþÀïÃæÓÐûÓÐÕâ¸öÊý×Ö¡£Õâ¾ÍÊÇÒ»¸ö²âÊÔÁË¡£·½·¨ºÜ¼òµ¥£º
ÓÐÁËÕâÌõÃüÁÎÒÃǾͿÉÒÔ¿ªÊ¼ bisect ÁË:
¶Ô master ·ÖÖ§£¨µÄÍ·²¿Ìá½»µã£©ÔËÐÐÕâ¸ö²âÊÔ£¬Ã»Óеõ½ÏëÒªµÄ½á¹û£¨¾ÍÊÇûÓÐÈκÎÊä³ö£©£¬ËùÒÔÎÒÃǰÑËü±ê¼ÇΪ»µµÄ¡£
ÏÖÔÚÈÃÎÒÃÇÖ¸¶¨Ò»¸öºÃµÄÌá½»µã£º¼ÙÉèµÚÒ»¸öÌá½»µã£¨7c0dcfa£©ÊÇûÓÐ bug µÄ¡£ÎÒÃÇ¿ÉÒÔ¼ì³ö£¨check
out£©Õâ¸öÌá½»µã²¢±ê¼ÇËüΪºÃµÄÌá½»µã£¨git bisect good + ¸ÃÌá½»µãµÄ¹þÏ£Öµ£©¡£
$ git bisect good 7c0dcfa Bisecting: 511 revisions left to test after this (roughly 9 steps) [8950f7db7e7cad0b2dc394ff9b75fc3d38c9d72a] added 512 |
Ò²¿ÉÒÔÓÃÏÂÃæµÄÃüÁÍê³ÉÉÏÃæµÄËùÓв½Ö裺
$ git bisect start master 7c0dcfa |
git bisect start ÃüÁî¿ÉÒÔ½ÓÊÜÁ½¸ö²ÎÊý£¬µÚÒ»¸öÊÇ»µµÄÌá½»µã£¬µÚ¶þÊǺõÄÌá½»µã¡£
ºÜºÃ£¬git bisect ×Ô¶¯¼ì³öÁËÕýÖмäµÄÌá½»µã£¬ÔËÐÐÎÒÃǵļì²âÃüÁûÓÐÈκεÄÊä³ö£¨Ã»ÓÐ bug£©£¬Òò´ËÎÒÃǰѸÃÌá½»µã±ê¼ÇΪºÃµÄ¡£
$ grep 1013 file.txt $ git bisect good Bisecting: Ê£Óà 255 ¸öÐÞ¶©´ý²âÊÔ (´ó¸Å»¹ÐèÒª 8 ²½) [a01ba83f3500b48da97c5f5c33052623aaa4161a] added 768 |
ÒëÕß×¢£º°´ÕÕ¶þ·Ö²éÕÒËã·¨£¬bisect ¸ù¾ÝÄã±ê¼ÇµÄ½á¹û£¬¾ö¶¨ÊǼì³ö×ó°ë±ßµÄÖмäÌá½»µã£¨Èç¹ûÄã±ê¼ÇΪ
bad£©»¹ÊÇÓÒ°ë±ßµÄÖмäÌá½»µã£¨Èç¹ûÄã±ê¼ÇΪ good£©
ÔÚ bisect мì³öµÄÌá½»µãÉÏ£¬ÎÒÃÇÔÙ´ÎÔËÐвâÊÔÃüÁî¡£Õâ´ÎÒÀÈ»ÊǸöºÃµÄÌá½»µã¡£
$ grep 1013 file.txt $ git bisect good Bisecting:Ê£Óà 127 ¸öÐÞ¶©´ý²âÊÔ (´ó¸Å»¹ÐèÒª 7 ²½) [4a4a668bf3363d09af5fd1906bc4272aacdb4495] added 896 |
Ôٴμì²â£¬»¹ÊǺõÄÌá½»µã¡£
$ grep 1013 file.txt $ git bisect good Bisecting: Ê£Óà 63 ¸öÐÞ¶©´ý²âÊÔ (´ó¸Å»¹ÐèÒª 6 ²½) [9059c5b8b898159e8d1d797bff3b1febd1fd6a1c] added 960 |
ÈÃÎÒÃÇ¿´¿´ÕâЩÏûÏ¢£º³ýÁ˸æËßÄ㵱ǰмì³öµÄÌá½»µãÒÔ¼°ÐµÄËÑË÷·¶Î§ÄÚÓжàÉÙ¸ö´ý²âÊÔµÄÌá½»µãÍ⣬Ëü»¹¹À¼Æ³öÄã×î¶à»¹ÐèÒªÖØ¸´¶àÉٴβâÊÔÃüÁî¾ÍÄÜÕÒµ½ÄãÒªµÄÌá½»µã¡£Õâ´ÎÓÖÊÇÒ»¸öºÃµÄÌá½»µã¡£
$ grep 1013 file.txt $ git bisect good Bisecting: Ê£Óà 31 ¸öÐÞ¶©´ý²âÊÔ (´ó¸Å»¹ÐèÒª 5 ²½) [0c844d0b33ef297b742206ebc293f4925705b083] added 992 |
¼ÌÐø£¬ÒÀÈ»ÊÇÒ»¸öºÃµÄÌá½»µã¡£
$ grep 1013 file.txt $ git bisect good Bisecting: Ê£Óà 15 ¸öÐÞ¶©´ý²âÊÔ (´ó¸Å»¹ÐèÒª 4 ²½) [0ee17eb17bd96b321a01c73eb13a8929a68b1239] added 1008 |
»¹ÓÐ 4 ²½£¬Õâ´ÎÒÀÈ» good¡£
$ grep 1013 file.txt $ git bisect good Bisecting: Ê£Óà 7 ¸öÐÞ¶©´ý²âÊÔ (´ó¸Å»¹ÐèÒª 3 ²½) [dfb1e71736dcfffa2a30aecd7299f45f757c057e] added 1016 |
Õâ´Î²âÊÔÃüÁîÖÕÓÚÓÐÁËÊä³ö£¬bug ÏÖÉíÁË£¡ÎÒÃǰÑÕâ¸öÌá½»µã±ê¼ÇΪ»µµÄ¡£
$ grep 1013 file.txt 1013 $ git bisect bad Bisecting: Ê£Óà 3 ¸öÐÞ¶©´ý²âÊÔ (´ó¸Å»¹ÐèÒª 2 ²½) [6e6d08c374df5162fed65fed82859b69f86b936e] added 1012 |
ÖÕµã½üÔÚåë³ß£¬²âÊÔͨ¹ý£¬ÎÒÃǰÑËü±ê¼ÇΪºÃµÄ¡£
$ grep 1013 file.txt $ git bisect bad Bisecting: Ê£Óà 1 ¸öÐÞ¶©´ý²âÊÔ (´ó¸Å»¹ÐèÒª 1 ²½) 254efa859d7fc66f1f58a59f0] added 1014 |
»µµÄÌá½»µã¡£
$ grep 1013 file.txt 1013 $ git bisect bad Bisecting: Ê£Óà 0 ¸öÐÞ¶©´ý²âÊÔ (´ó¸Å»¹ÐèÒª 0 ²½) 8e16d98ec7039a7c53855dd9ed6] added 1013 |
×îºóÒ»²½£¬Õâ´ÎÊÇ»µµÄ¡£
$ git bisect bad
458eab0eb8d808e16d98ec7039a7c53855dd9ed6 is the first bad commit
commit 458eab0eb8d808e16d98ec7039a7c53855dd9ed6
Author: Rodrigo Flores <mail@rodrigoflores.org>
Date: Tue Oct 21 22:31:05 2014 -0200
added 1013
:100644 100644 7bc3db7f48a43ccf1a8cc7c26146912cc88c1009 b393a2138a96c1530f41f70
1ab43cca893226976 M file.txt
|
ÎÒÃÇÖÕÓڵõ½ÁËÄǸöÒýÈë 1013 Êý×ÖµÄÌá½»µã¡£ÃüÁî git bisect log ¿ÉÒԻطÅÕû¸ö¹ý³Ì¡£
$ git bisect start # bad: [740cdf012013dc41a39b41d4b09b57a970bfe38f] added 1024 git bisect bad 740cdf012013dc41a39b41d4b09b57a970bfe38f # good: [7c0dcfa7514379151e0d83ffbf805850d2093538] added 1 git bisect good 7c0dcfa7514379151e0d83ffbf805850d2093538 # good: [8950f7db7e7cad0b2dc394ff9b75fc3d38c9d72a] added 512 git bisect good 8950f7db7e7cad0b2dc394ff9b75fc3d38c9d72a # good: [a01ba83f3500b48da97c5f5c33052623aaa4161a] added 768 git bisect good a01ba83f3500b48da97c5f5c33052623aaa4161a # good: [4a4a668bf3363d09af5fd1906bc4272aacdb4495] added 896 git bisect good 4a4a668bf3363d09af5fd1906bc4272aacdb4495 # good: [9059c5b8b898159e8d1d797bff3b1febd1fd6a1c] added 960 git bisect good 9059c5b8b898159e8d1d797bff3b1febd1fd6a1c # good: [0c844d0b33ef297b742206ebc293f4925705b083] added 992 git bisect good 0c844d0b33ef297b742206ebc293f4925705b083 # good: [0ee17eb17bd96b321a01c73eb13a8929a68b1239] added 1008 git bisect good 0ee17eb17bd96b321a01c73eb13a8929a68b1239 # bad: [dfb1e71736dcfffa2a30aecd7299f45f757c057e] added 1016 git bisect bad dfb1e71736dcfffa2a30aecd7299f45f757c057e # good: [6e6d08c374df5162fed65fed82859b69f86b936e] added 1012 git bisect good 6e6d08c374df5162fed65fed82859b69f86b936e # bad: [1d23b7045a8accd254efa859d7fc66f1f58a59f0] added 1014 git bisect bad 1d23b7045a8accd254efa859d7fc66f1f58a59f0 # bad: [458eab0eb8d808e16d98ec7039a7c53855dd9ed6] added 1013 git bisect bad 458eab0eb8d808e16d98ec7039a7c53855dd9ed6 # first bad commit: [458eab0eb8d808e16d98ec7039a7c53855dd9ed6] added 1013 |
Õâ¸öÀý×ÓÀïÒ»¹²ÓÐ 1024 ¸öÌá½»µã£¬±éÀúËûÃÇÎÒÃÇÖ»ÓÃÁË 10 ²½¡£Èç¹ûÌá½»µãÊýÁ¿ÔÙ¶àÒ»±¶±ä³É 2048
¸ö£¬¸ù¾Ý¶þ·Ö²éÕÒËã·¨£¬ÎÒÃǽö½öÐèÒª¶à¼ÓÒ»²½¾ÍÄÜÕÒµ½ÏëÒªµÄÌá½»µã£¬ÒòΪ¶þ·Ö²éÕÒËã·¨µÄʱ¼ä¸´ÔÓ¶ÈΪ O(log
n)¡£
¾¡¹ÜÒѾÈç´Ë¸ßЧ£¬Ò»±éÓÖÒ»±éµÄÔËÐвâÊÔÃüÁÊǺܿÝÔïµÄ¡£Òò´Ë£¬ÈÃÎÒÃÇÔÙ½øÒ»²½£¬½«Õâ¸ö¹ý³Ì×Ô¶¯»¯°É¡£
×Ô¶¯»¯
Git bisect ÄܽÓÊÜÒ»¸ö½Å±¾ÎļþÃû×÷ΪÃüÁî²ÎÊý£¬Í¨¹ýËüµÄ·µ»Ø´úÂëÅжϵ±Ç°Ìá½»µãµÄºÃ»µ¡£Èç¹û·µ»Ø
0£¬¾ÍÊǺõÄÌá½»µã£¬·µ»ØÆäËûÖµ¾ÍÊÇ»µµÄÌá½»µã¡£´ÕÇɵÄÊÇ£¬grep ÃüÁîÈç¹ûÕÒµ½ÁËÆ¥ÅäÐоͻ᷵»Ø 0£¬·´Ö®·µ»Ø
1¡£Äã¿ÉÒÔʹÓà echo $? ÃüÁîÀ´¼ì²é²âÊÔÃüÁîµÄ·µ»ØÖµ¡£
grep µÄ·µ»ØÖµÕýºÃºÍÎÒÃǵIJâÊÔ±ê×¼Ïà·´£¬ËùÒÔÎÒÃÇÐèҪдһ¸ö½Å±¾À´·´×ªËüµÄÖµ£¨ÎÒ²»Ì«Ï°¹ßд shell
½Å±¾£¬Èç¹û´ó¼ÒÓиüºÃµÄ·½·¨£¬¸Ðл¸æÖª£©¡£
#!/bin/sh if [[ `grep 1013 file.txt` ]]; then exit 1 else exit 0 fi |
±£´æÉÏÊö´úÂëΪ test.sh£¬²¢¸³ÓèËüÖ´ÐÐȨÏÞ¡£
½Ó×ÅÔÚ¸ø bisect ÃüÁîÖ¸¶¨Á˳õʼµÄºÃ/»µÌá½»µãÖ®ºó£¬ÄãÖ»ÐèÒªÔËÐУº
git bisect run ./test.sh running ./ola.sh Bisecting: 255 revisions left to test after this (roughly 8 steps) [a01ba83f3500b48da97c5f5c33052623aaa4161a] added 768 running ./ola.sh Bisecting: 127 revisions left to test after this (roughly 7 steps) [4a4a668bf3363d09af5fd1906bc4272aacdb4495] added 896 running ./ola.sh Bisecting: 63 revisions left to test after this (roughly 6 steps) [9059c5b8b898159e8d1d797bff3b1febd1fd6a1c] added 960 running ./ola.sh Bisecting: 31 revisions left to test after this (roughly 5 steps) [0c844d0b33ef297b742206ebc293f4925705b083] added 992 running ./ola.sh Bisecting: 15 revisions left to test after this (roughly 4 steps) [0ee17eb17bd96b321a01c73eb13a8929a68b1239] added 1008 running ./ola.sh Bisecting: 7 revisions left to test after this (roughly 3 steps) [dfb1e71736dcfffa2a30aecd7299f45f757c057e] added 1016 running ./ola.sh Bisecting: 3 revisions left to test after this (roughly 2 steps) [6e6d08c374df5162fed65fed82859b69f86b936e] added 1012 running ./ola.sh Bisecting: 1 revision left to test after this (roughly 1 step) [1d23b7045a8accd254efa859d7fc66f1f58a59f0] added 1014 running ./ola.sh Bisecting: 0 revisions left to test after this (roughly 0 steps) [458eab0eb8d808e16d98ec7039a7c53855dd9ed6] added 1013 running ./ola.sh 458eab0eb8d808e16d98ec7039a7c53855dd9ed6 is the first bad commit commit 458eab0eb8d808e16d98ec7039a7c53855dd9ed6 Author: Rodrigo Flores <mail@rodrigoflores.org> Date: Tue Oct 21 22:31:05 2014 -0200 added 1013 :100644 100644 7bc3db7f48a43ccf1a8cc7c26146912cc88c1009 b393a2138a96c15 30f41f701ab43cca893226976 M file.txt bisect run success |
²»·Ñ´µ»ÒÖ®Á¦£¬Äã¾ÍµÃµ½Á˳öÎÊÌâµÄÌá½»µã¡£
½áÂÛ
ÄãºÜ¿ÉÄܲ»»áÿÌì¶¼Óõ½ bisect¡£Ò²ÐíÒ»ÖÜÓÃÒ»´Î£¬ÉõÖÁÒ»¸öÔÂÖ»Óõ½Ò»´Î¡£µ«Êǵ±ÄãÏëÒªÅŲé³ö´øÈëÎÊÌâµÄÌá½»µãʱ£¬bisect
ȷʵÄܰïÄãÒ»°Ñ¡£¾¡¹Ü²¢·Ç±ØÐ룬¿ØÖƺÃÿ´ÎÌá½»µÄ¸Ä¶¯¹æÄ£²»ÒªÌ«´ó½«¶Ô bisect ÅŲé´óÓаïÖú¡£Èç¹ûÿ¸öÌá½»¶¼°üº¬ÁË´óÁ¿µÄ¸Ä¶¯£¬ÄÇô¾ÍËã
bisect °ïÄãÕÒµ½Õâ¸öÌá½»£¬ÄãÒ²²»µÃ²»ÂñÍ·ÓÚ´óÁ¿µÄ¸Ä¶¯Öпà¿àËÑѰ bug µÄ×Ù¼£¡£Òò´Ë£¬ÎÒÍÆ¼öµÄÌá½»²ßÂÔÊÇÏÓ´ó²»ÏÓ¶à¡£
ÄãÄØ£¿Äã¾³£Ê¹Óà bisect Âð£¿
|