欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python二分法搜索算法實例分析

 更新時間:2015年05月11日 16:06:55   作者:像風一樣的自由  
這篇文章主要介紹了Python二分法搜索算法,實例分析了Python實現(xiàn)二分法的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例分析了Python二分法搜索算法。分享給大家供大家參考。具體分析如下:

今天看書時,書上提到二分法雖然道理簡單,大家一聽就明白但是真正能一次性寫出別出錯的實現(xiàn)還是比較難的,即使給了你充足的時間,比如1小時。如果你不是特別認真的話,可能還是會出一些這樣那樣的錯誤,所以就嘗試了自己去實現(xiàn)一下,看能否一次通過,結(jié)果自然不言而喻,雖然用的時間不長,但是我失敗了,呵呵。

個人覺得失敗的最主要原因是自己沒有認真的先想好這個思路和可能出現(xiàn)的分支情況,而是直接憑主觀臆想就去寫代碼了,完全正中書上所說的行為,所以也如書上所說,出錯了。后經(jīng)調(diào)試應(yīng)該是得到了基本的正確算法,內(nèi)容如下:

#!/usr/bin/env python
#encoding: utf-8
def half_search(search_arr, search_str):
  lb = 0
  ub = len(search_arr) - 1
  for i in range(ub/2 + 1):
    if lb > ub:
      return -1
    mid = (ub + lb)/2
    if search_arr[mid] == search_str:
      return mid
    elif search_arr[mid] > search_str:
      ub = mid - 1
    else:
      lb = mid + 1
if __name__=='__main__':
  arr = [10,20,30,40,50,60,70]
  print half_search(arr, 1)
  print half_search(arr, 11)
  print half_search(arr, 22)
  print half_search(arr, 33)
  print half_search(arr, 40)
  print half_search(arr, 55)
  print half_search(arr, 66)
  print half_search(arr, 70)
  print half_search(arr, 8)

結(jié)果:

-1 
-1 
-1 
-1 
3 
-1 
-1 
6 
-1

正整數(shù)代表在數(shù)組中的下標,3那就是第4個位置;-1代表不存在

總結(jié):

實現(xiàn)簡單的算法之前,如果已經(jīng)有了一套最簡易的實現(xiàn)【比如直接打印100條相似的內(nèi)容】,不妨要想想是否還有更精巧的實現(xiàn)【可否用循環(huán)+參數(shù)化替代】;實現(xiàn)稍微復雜點的算法時,不妨先在紙上畫出各種可能的驗證情況,避免實現(xiàn)是缺胳膊短腿的;還有一點就是算法什么的還是要多練,不然稍微復雜的過一陣可能就會忘記細節(jié)了。我想這就叫術(shù)業(yè)有專攻吧!

希望本文所述對大家的Python程序設(shè)計有所幫助。

相關(guān)文章

  • python容器的內(nèi)置通用函數(shù)操作

    python容器的內(nèi)置通用函數(shù)操作

    容器是一種把多個元素組織在一起的數(shù)據(jù)結(jié)構(gòu),容器中的元素可以逐個地迭代獲取,可以用in, not in關(guān)鍵字判斷元素是否包含在容器中。接下來通過本文給大家介紹python容器的內(nèi)置通用函數(shù)操作,感興趣的朋友一起看看吧
    2021-11-11
  • python格式化輸出%s與format()的用法對比

    python格式化輸出%s與format()的用法對比

    這篇文章主要為大家介紹了python格式化輸出%s與format()的用法對比,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-10-10
  • python中Matplotlib繪制直線的實例代碼

    python中Matplotlib繪制直線的實例代碼

    在本篇文章里小編給大家整理的是一篇關(guān)于python中Matplotlib繪制直線的實例代碼內(nèi)容,有興趣的朋友們可以跟著學習下。
    2021-07-07
  • Python OpenCV對圖像進行模糊處理詳解流程

    Python OpenCV對圖像進行模糊處理詳解流程

    OpenCV是一個基于BSD許可(開源)發(fā)行的跨平臺計算機視覺庫,可以運行在Linux、Windows、Android和Mac OS操作系統(tǒng)上。它輕量級而且高效——由一系列 C 函數(shù)和少量 C++ 類構(gòu)成,同時提供了Python、Ruby、MATLAB等語言的接口,實現(xiàn)了圖像處理和計算機視覺方面很多通用算法
    2021-10-10
  • Python實現(xiàn)RLE格式與PNG格式互轉(zhuǎn)

    Python實現(xiàn)RLE格式與PNG格式互轉(zhuǎn)

    在機器視覺領(lǐng)域的深度學習中,很多數(shù)據(jù)集的標注文件使用RLE的格式。但是神經(jīng)網(wǎng)絡(luò)的輸入一定是一張圖片,為此必須把RLE格式的文件轉(zhuǎn)變?yōu)閳D像格式。本文將利用Python實現(xiàn)RLE格式與PNG格式互轉(zhuǎn),感興趣的可以了解一下
    2022-08-08
  • django在接受post請求時顯示403forbidden實例解析

    django在接受post請求時顯示403forbidden實例解析

    這篇文章主要介紹了django在接受post請求時顯示403forbidden實例解析,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • python使用pip安裝模塊出現(xiàn)ReadTimeoutError: HTTPSConnectionPool的解決方法

    python使用pip安裝模塊出現(xiàn)ReadTimeoutError: HTTPSConnectionPool的解決方法

    這篇文章主要介紹了python使用pip安裝模塊出現(xiàn)ReadTimeoutError: HTTPSConnectionPool的解決方法,需要的朋友可以參考下
    2019-10-10
  • Python 如何提高元組的可讀性

    Python 如何提高元組的可讀性

    這篇文章主要介紹了Python 如何提高元組的可讀性,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • python中裝飾器的理解與使用詳解

    python中裝飾器的理解與使用詳解

    這篇文章主要介紹了python中裝飾器的理解與使用詳解,裝飾器本質(zhì)上是一個閉包函數(shù),其作用在于可以為其他函數(shù)增加額外功能,裝飾器的返回值是一個函數(shù)對象,需要的朋友可以參考下
    2023-07-07
  • python?kornia計算機視覺庫實現(xiàn)圖像變化

    python?kornia計算機視覺庫實現(xiàn)圖像變化

    這篇文章主要為大家介紹了python?kornia計算機視覺庫實現(xiàn)圖像變化算法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01

最新評論