#è·é»å¥å¦pythonåºåæç« ä¹pythonäºåæ¥æ¾ç®æ³ å¦æä½ æè§é»å¥çæç« å¯¹ä½ æå¸®å©è¯·æèµï¼æ¯ä»å®è´¦å·ï¼[email protected] å¨è®¡ç®æºç§å¦ä¸ï¼äºåæ¥æ¾ç®æ³ï¼binary searchï¼ãä¹ç§°æåæç´¢ï¼è±è¯ï¼half-interval searchï¼ï¼ äºåæç´¢æ³ãäºåæç´¢ãäºåæ¢ç´¢ï¼æ¯ä¸ç§å¨æåºæ°ç»ä¸æ¥æ¾æä¸ç¹å®å ç´ çæç´¢ç®æ³ã æç´¢è¿ç¨ä»æ°ç»çä¸é´å ç´ å¼å§ï¼å¦æä¸é´å ç´ æ£å¥½æ¯è¦æ¥æ¾çå ç´ ï¼åæç´¢è¿ç¨ç»æï¼ 妿æä¸ç¹å®å ç´ å¤§äºæè å°äºä¸é´å ç´ ï¼å卿°ç»å¤§äºæå°äºä¸é´å ç´ çé£ä¸å䏿¥æ¾ï¼ èä¸è·å¼å§ä¸æ ·ä»ä¸é´å ç´ å¼å§æ¯è¾ã妿卿䏿¥éª¤æ°ç»ä¸ºç©ºï¼å代表æ¾ä¸å°ã è¿ç§æç´¢ç®æ³æ¯ä¸æ¬¡æ¯è¾é½ä½¿æç´¢èå´ç¼©å°ä¸åã (æ¥æºäºç»´åºç¾ç§) # äºåæ¥æ¾å¾ªç¯ç #! /usr/bin/python # coding:utf-8 def binary_search_while(key, arr): '''list å¿ é¡»æ¯æåºå¥½ç é»å¥pythonå¹è®_pythonç¼ç¨æè·¯ä¹å å¨è¯¢qq:1465376564 http://www.tudou.com/programs/view/Z4IClY5Wj-g/ è¿ç»´å¦ä½éè¿å¦ä¹ pythonå¦ä¼ç¼ç¨ https://github.com/pythonpeixun/article/blob/master/python/how_to_learn_python.md é»å¥pythonè¿ç¨è§é¢å¹è®ç https://github.com/pythonpeixun/article/blob/master/index.md é»å¥pythonå¹è®è¯çè§é¢ææ¾å°å https://github.com/pythonpeixun/article/blob/master/python_shiping.md ''' start = 0 end = len(arr) - 1 while start <= end: mid = start + (end - start) // 2 if arr[mid] < key: start = mid + 1 elif arr[mid] > key: end = mid - 1 else: return mid return -1 if __name__ == '__main__': arr = [3, 9, 28, 67, 12, 45] arr.sort() print(binary_search_while(12, arr)) print(binary_search_while(3, arr)) print(binary_search_while(9, arr)) print(binary_search_while(99, arr)) ï¼äºåæ¥æ¾éå½ç #! /usr/bin/python # coding:utf-8 def binary_search_recursion(key, arr, start, end): '''list å¿ é¡»æ¯æåºå¥½ç é»å¥pythonå¹è®_pythonç¼ç¨æè·¯ä¹å å¨è¯¢qq:1465376564 http://www.tudou.com/programs/view/Z4IClY5Wj-g/ è¿ç»´å¦ä½éè¿å¦ä¹ pythonå¦ä¼ç¼ç¨ https://github.com/pythonpeixun/article/blob/master/python/how_to_learn_python.md é»å¥pythonè¿ç¨è§é¢å¹è®ç https://github.com/pythonpeixun/article/blob/master/index.md é»å¥pythonå¹è®è¯çè§é¢ææ¾å°å https://github.com/pythonpeixun/article/blob/master/python_shiping.md ''' if start > end: return -1 mid = start + (end - start) // 2 if arr[mid] > key: return binary_search_recursion(key, arr, start, mid - 1) if arr[mid] < key: return binary_search_recursion(key, arr, mid + 1, end) return mid if __name__ == '__main__': arr = [3, 9, 28, 67, 12, 45] arr.sort() print(binary_search_recursion(12, arr, 0, len(arr)-1)) print(binary_search_recursion(3, arr, 0, len(arr)-1)) print(binary_search_recursion(9, arr, 0, len(arr)-1)) print(binary_search_recursion(99, arr, 0, len(arr)-1)) #ç¨éå®ä¾ï¼ ç½ååè¿æ»¤ï¼æä¸å®¶åä¸é¶è¡ï¼å°æ°åä¸å®¢æ·ååä¿åä¸ºææ¬æä»¶ä¸ï¼ä¸ºç½ååã ç½ååå¤çææåºå¥½çæ°ç»ãå¯ä»¥ç¨äºåæ¥æ¾ç®æ³å¿«éæé¤ç¨æ·è´¦å·æ¯ä¸æ¯é¶è¡ç客æ·ã [ç¹å»é»å¥pythonå¹è®è¯çè§é¢ææ¾å°å](https://github.com/pythonpeixun/article/blob/master/python_shiping.md) [é»å¥pythonè¿ç¨è§é¢å¹è®ç](https://github.com/pythonpeixun/article/blob/master/index.md)