论坛首页 编程语言技术论坛

妙趣横生的python 算法 之 折半查找

浏览 7682 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (15) :: 隐藏帖 (2)
作者 正文
   发表时间:2010-05-04   最后修改:2010-05-13
之前的代码写的比较匆忙,真实不好意思啊,见笑了,
代码已经更正
# -*- coding:utf8 -*-
import os
import sys
import math

def halfSearch(arr=[1,2,3,4,5],find = 1):
    '''
    折半查找,2分查找
    折半查找的前提是数据是有序的
    算法:mid = Math.floor(low+hight/2)
    '''
    mid = 0
    low = 0 
    high = len(arr) - 1
    while(low<=high):
        print low,high
        mid = (low + high)/2
        print mid
        if(arr[mid]==find):
            print "find %s index is %s",(find,mid)
            return
        else:
            if(find > arr[mid]):
                low = mid + 1
            else:
                high = mid - 1
    print "Not Find"
    return None
    
#运行脚本
if __name__ =="__main__":
    halfSearch()
    


   发表时间:2010-05-07  
这个程序只能找出 3 和5 啊? 别的不是出错就是死循环。。。。
0 请登录后投票
   发表时间:2010-05-12  
zfzaizheli 写道
这个程序只能找出 3 和5 啊? 别的不是出错就是死循环。。。。


看下程序就知道了,这个程序只有在找到数值的时候才会break,不然就无限死循环。
0 请登录后投票
   发表时间:2010-05-12   最后修改:2010-05-12
这个程序能用?除非第一个循环就能找到目标,不然貌似就是无限死循环啊.判断语句写反了
0 请登录后投票
   发表时间:2010-05-12  
这个一旦找不到,定会死循环了哦。。
0 请登录后投票
   发表时间:2010-05-15  
主要是搞不明白妙趣横生在哪里?
0 请登录后投票
   发表时间:2010-05-18  
乱用形容词的标题党
0 请登录后投票
   发表时间:2010-06-24  
第20行···
0 请登录后投票
   发表时间:2010-09-01  
标题党。。。。。。。
0 请登录后投票
   发表时间:2011-01-10  
mid = (low + high)/2 

这句的写法在这里是否妥当
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics