ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

ËÑË÷Ëã·¨¶þ·Ö²éÕÒ·¨£¨ÕÛ°ë²éÕÒ·¨£©
2014-11-24 01:43:21 ¡¾´ó ÖРС¡¿ ä¯ÀÀ:6318´Î
Tags£ºËÑË÷ Ëã·¨ ¶þ·Ö ²éÕÒ

ÕÛ°ë²éÕÒ·¨Ò²³ÆΪ¶þ·Ö²éÕÒ·¨£¬Ëü³ä·ÖÀûÓÃÁËÔªËؼäµÄ´ÎÐò¹Øϵ£¬²ÉÓ÷ÖÖβßÂÔ£¬¿ÉÔÚ×µÄÇé¿öÏÂÓÃO(log n)Íê³ÉËÑË÷ÈÎÎñ¡£ËüµÄ»ù±¾Ë¼ÏëÊÇ£¬½«n¸öÔªËطֳɸöÊý´óÖÂÏàͬµÄÁ½°ë£¬È¡a[n/2]ÓëÓû²éÕÒµÄx×÷±È½Ï£¬Èç¹ûx=a[n/2]ÔòÕÒµ½x£¬Ëã·¨ÖÕÖ¹¡£Èç¹ûx a[n/2]£¬ÔòÎÒÃÇÖ»ÒªÔÚÊý×éaµÄÓҰ벿¼ÌÐøËÑË÷x¡£¶þ·ÖËÑË÷·¨µÄÓ¦Óü«Æä¹ã·º£¬¶øÇÒËüµÄ˼ÏëÒ×ÓÚÀí½â£¬µ«ÊÇҪдһ¸öÕýÈ·µÄ¶þ·ÖËÑË÷Ëã·¨Ò²²»ÊÇÒ»¼þ¼òµ¥µÄÊ¡£µÚÒ»¸ö¶þ·ÖËÑË÷Ëã·¨ÔçÔÚ1946Äê¾Í³öÏÖÁË£¬µ«ÊǵÚÒ»¸öÍêÈ«ÕýÈ·µÄ¶þ·ÖËÑË÷Ëã·¨Ö±µ½1962Äê²Å³öÏÖ¡£BentleyÔÚËûµÄÖø×÷¡¶Writing Correct Programs¡·ÖÐдµÀ£¬90%µÄ¼ÆËã»úר¼Ò²»ÄÜÔÚ2СʱÄÚд³öÍêÈ«ÕýÈ·µÄ¶þ·ÖËÑË÷Ëã·¨¡£ÎÊÌâµÄ¹Ø¼üÔÚÓÚ׼ȷµØÖƶ¨¸÷´Î²éÕÒ·¶Î§µÄ±ß½çÒÔ¼°ÖÕÖ¹Ìõ¼þµÄÈ·¶¨£¬ÕýÈ·µØ¹éÄÉÆæżÊýµÄ¸÷ÖÖÇé¿ö£¬ÆäʵÕûÀíºó¿ÉÒÔ·¢ÏÖËüµÄ¾ßÌåËã·¨ÊǺÜÖ±¹ÛµÄ£¬ÎÒÃÇ¿ÉÓÃC++ÃèÊöÈçÏ£º
template
int BinarySearch(Type a[],const Type& x,int n)
{
int left=0;
int right=n-1;
while(left<=right){
int middle=(left+right)/2;
if (x==a[middle]) return middle;
if (x>a[middle]) left=middle+1;
else right=middle-1;
}
return -1;
}


Ä£°åº¯ÊýBinarySearchÔÚa[0]<=a[1]<=...<=a[n-1]¹²n¸öÉýÐòÅÅÁеÄÔªËØÖÐËÑË÷x,ÕÒµ½xʱ·µ»ØÆäÔÚÊý×éÖеÄλÖ㬷ñÔò·µ»Ø-1¡£ÈÝÒ׿´³ö£¬Ã¿Ö´ÐÐÒ»´ÎwhileÑ­»·£¬´ýËÑË÷Êý×éµÄ´óС¼õÉÙÒ»°ë,Òò´ËÕû¸öËã·¨ÔÚ×Çé¿öϵÄʱ¼ä¸´ÔÓ¶ÈΪO(log n)¡£ÔÚÊý¾ÝÁ¿ºÜ´óµÄʱºò£¬ËüµÄÏßÐÔ²éÕÒÔÚʱ¼ä¸´ÔÓ¶ÈÉϵÄÓÅÁÓһĿÁËÈ»¡£


javaÖеÄʵÀýÈçÏ£º
public class TestSearch {
public static void main(String[] args) {
int a[] = { 1, 3, 6, 8, 9, 10, 12, 18, 20, 34 };
int i = 12;
//System.out.println(search(a, i));
System.out.println(binarySearch(a, i));
}


public static int search(int[] a, int num) {
for(int i=0; i if(a == num) return i;
}
return -1;
}


public static int binarySearch(int[]a, int num) {
if (a.length==0) return -1;


int startPos = 0;
int endPos = a.length-1;
int m = (startPos + endPos) / 2;
while(startPos <= endPos){
if(num == a
) return m;
if(num > a
) {
startPos = m + 1;
}
if(num < a
) {
endPos = m -1;
}
m = (startPos + endPos) / 2;
}
return -1;
}
}


¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
ÉÏһƪ£ºJava»ù´¡ÖªÊ¶ÃæÊÔÌâÊý×éºÍ×Ö·û´®.. ÏÂһƪ£º±±¾©-»ªÃÀѸ´ïC/VC++¹¤³Ìʦ±ÊÊÔÊÔ..

×îÐÂÎÄÕÂ

ÈÈÃÅÎÄÕÂ

Hot ÎÄÕÂ

Python

C ÓïÑÔ

C++»ù´¡

´óÊý¾Ý»ù´¡

linux±à³Ì»ù´¡

C/C++ÃæÊÔÌâÄ¿