`
v5browser
  • 浏览: 1139353 次
社区版块
存档分类
最新评论

Python 实现的Binary Search 算法以及效率的对比

 
阅读更多

最近用Python3.2,3实现了一下Binary Search算法,同时看到网上有关于程序执行时间统计的代码段,于是就加到了程序里

import random
import functools
import timeit

original=[]
target=0;

def binary_search(target,seq=[],lowerindex=0,upperindex=None):
  "for binary search"
  middleIndex=int((upperindex+lowerindex)/2)
  if middleIndex==lowerindex:
    print("not found",target)
  else:
    if seq[middleIndex]==target:
      print("binary search found",seq[middleIndex])
      print("binary search index is:", middleIndex+1)
    elif seq[middleIndex]<target:
      binary_search(target,seq,middleIndex,upperindex)
    else:
      binary_search(target,seq,lowerindex,middleIndex)

def larget_number_search_binarysearch():
  print("target number is:",target);
  sortseq=original[:]
  sortseq.sort()
  binary_search(target,sortseq,0,len(sortseq));

def larget_number_search():
  for index,temp in enumerate(original):
      if target==temp:
        print("iterator search found", target);
        print("iterator index is:",index+1);
        break;

def compare_search_effective():
	"比较二分查找法与迭代查找法的效率"
  global original, target
  original=[random.randint(0,100000000) for x in range(1000000000)]
  target=random.choice(original);
  #通过timeit.Timer统计发放的执行时间
  binary_search_time = timeit.Timer('larget_number_search_binarysearch()',"from __main__ import larget_number_search_binarysearch") # v3
  iterator_search_time=timeit.Timer('larget_number_search()',"from __main__ import larget_number_search") # v3
  
  print ("binary search time:",binary_search_time.timeit(1),"\n");
  print ("iterator search time:",iterator_search_time.timeit(1));

#Main
if __name__=="__main__":
  compare_search_effective();


分享到:
评论

相关推荐

    基于python的查找算法-二分查找Binary Search

    基于python的查找算法-二分查找Binary Search

    python 实现 搜索 课程设计 代码

    python 实现 搜索 课程设计 代码 二分搜索(Binary Search) 二叉树遍历(Binary Tree Traversal) 双重线性搜索(Double Linear Search) 双重线性搜索递归(Double Linear Search Recursion) 斐波那契搜索...

    二分查找.docx 二分查找(Binary Search)是一种在有序数组中查找特定元素的算法 该算法的基本思想是先确定待查找区

    下面是一个简单的 Python 实现二分查找算法的示例: ```python def binary_search(arr, target): left = 0 right = len(arr) - 1 while left mid = (left + right) // 2 if arr[mid] == target: return ...

    Python3实现二分查找算法(源代码)

    本文介绍了一个使用Python实现的二分查找(Binary Search)算法。二分查找是一种在有序数组中查找某一特定元素的搜索算法。该算法的工作原理是,在每一次迭代中,算法都会比较数组中间的元素与目标值。如果目标值...

    常用算法(python)

    二分查找(Binary Search) 线性查找(Linear Search) 素字符串匹配算法(Naive String Matching) KMP 算法(Knuth-Morris-Pratt) Rabin-Karp 算法 Boyer-Moore 算法 A* 搜索算法 Dijkstra 算法 Bellman-Ford ...

    algorithms-in-python:Python实现的基本算法

    python中的算法用 Python 实现的基本算法。 算法Bubble Sort Selection Sort Insertion Sort Shell Sort Merge Sort (Top-Down) Quick Sort Heap Sort Radix Sort (Unfinished) Binary Search 测试

    python二分查找算法的递归实现方法

    本文实例讲述了python二分查找算法的递归实现方法。分享给大家供大家参考,具体如下: 这里先提供一段二分查找的代码: def binarySearch(alist, item): first = 0 last = len(alist)-1 found = False while ...

    简介二分查找算法与相关的Python实现示例

    主要介绍了二分查找算法与相关的Python实现示例,Binary Search同时也是算法学习当中最基础的知识,需要的朋友可以参考下

    算法:python3中的算法实践

    算法研究资料库-python Leetcode(英语),BaekJoon(韩国),程序员(韩国) LeetCode 日期 码 类别 链接 1/14 array 1/15 greedy 1/16 dynamic programming 1/18 dynamic programming 1/24 greedy 1/...

    lrucacheleetcode-LeetCode-Python:数据结构和算法的学习

    数据结构和算法的学习 学习数据结构和算法的好处 提升编程能力,理解当红技术 区块链的结构就是一个链表(linked list),每一个区块的指针指向前一个区块。 每一个区块内的结构是二叉树(Binary Tree),Merkle ...

    cpp-算法精粹

    本书的目标读者是准备去硅谷找工作的码农,也适用于在国内找工作的码农,以及刚接触ACM算法竞赛的新手。 市场上讲解算法的书已经汗牛充栋,为什么还要写这本书呢?主要原因是我对目前市场上的大部分算法书都不太...

    在 Python 和笔记本电脑 上对数百万个集合进行 全对集合相似性搜索

    Python中高效的集合相似...该软件包包括Scaling Up All Pairs Similarity Search论文中“All-Pair-Binary”算法的 Python 实现 ,以及额外的位置过滤器优化。该算法仍然具有与蛮力算法相同的最坏情况复杂性,但是,通过

    Python3实现非递归二分查找

    使用Python3实现非递归的二分查找算法,资源中包含具体实现代码与单元测试代码,已进行代码重构,代码风格整洁易读

    python实现二分搜索.md

    二分搜索 二分搜索(Binary Search)是一种用于在有序数组中查找元素的高效算法。它通过将数组分成两半并比较目标元素与中间元素的值来快速确定目标元素的位置。

    Python数据结构和算法

    数据结构算法-二进制搜索“”“您将要编写一个二进制搜索功能。您应该使用迭代方法-意味着要使用循环。您的函数应该接受两个输入:要搜索的Python列表和要搜索的值。 list仅包含不同的元素,这意味着没有重复的值,...

    Python Data Structures and Algorithms [2017]

    We will explore the application of binary searches and binary search trees. You will learn the common techniques and structures used in tasks such as preprocessing, modeling, and transforming data. ...

    binary_search

    二元搜寻 您将实现二进制搜索算法的多种变体。 学习目标: 了解二进制搜索算法 练习递归 任务 完成以下任务: ... 该函数的伪代码在binary_search.py文件中提供。 提交 将链接提交到您在sakai上的分叉存储库。

    python-algorithm-templates:Python算法模板和LeetCode问题解决方案

    Algorithm templates and LeetCode SolutionsTBD Add multi binary search algorithm for leetcode0034 Add Segment Tree for data structure Add union-find algorithm(Disjoint Set Union) for data structure Add...

    论文研究-求解0-1背包问题的混沌二进制乌鸦算法.pdf

    然后,为快速有效地求解0-1背包问题,引入贪心修复与优化策略处理非正常编码个体,得到基于混沌理论的二进制乌鸦算法(chaotic binary crow search algorithm,CBCSA)。仿真实验表明,CBCSA具有良好的全局寻优能力...

Global site tag (gtag.js) - Google Analytics