摘要: 二分搜索折半搜索,也称二分查找算法、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。时间复杂度:二分搜索每次把搜索区域减少一半,很明显时间复杂度为O(logN)。空间复杂度:O(1),虽以递归形式定义,但是尾递归,可改写为循环。二分搜索的基本实现二分查找法在算法家族大类中属于“分治法”,分治法基本都可以用递归来实现的 阅读全文
posted @ 2013-03-06 21:48 一枚程序员 阅读(563) 评论(0) 推荐(0) 编辑
摘要: “设计者确定其设计已经达到了完美的标准不是不能再添加任何问题,而是不能再减少任何问题”,程序员应该以此为标准。。。怎样给一个磁盘文件排序?问题描述:输入:一个最多含有n个不相同的正整数的文件,其中每个数都小于等于n,且n=10^7。输出:得到按从小到大升序排列的包含所有输入的整数的列表。约束:最多有大约1MB的内存空间可用,但磁盘空间足够。且要求运行时间在5分钟以下,10秒为最佳结果。分析如下:如何在1MB的空间里对10000000个整数进行排序?而且每个数都小于10000000。实际上这个需要1.25MB的内存空间(此时考虑的是用位图表示法时,每一位代表一个数,那么10000000/(102 阅读全文
posted @ 2013-03-06 21:09 一枚程序员 阅读(1843) 评论(1) 推荐(0) 编辑