与折半查找是同一个模式,不同的是,在这里不在查找某个确定的值,而是查找确定值所在的上下边界。def getBounder(data, k, start, end, low_bound = False): if end > 1 if data[ mid ] > k: end = mid - 1 ...
分类:
其他好文 时间:
2014-08-02 10:01:53
阅读次数:
208
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。
假设其数组长度为n,其算法复杂度为o(log(n))
代码:
#include
using namespace std;
bool BinarySearch(int data[],int start, int end, int number){
while(start...
分类:
其他好文 时间:
2014-08-01 09:14:51
阅读次数:
228
import javax.mail.Part;
/**
* 顺序查找
*
* @author 曾修建
* @version 创建时间:2014-7-30 下午04:15:10
*/
public class SequentialSearch {
public static void main(String[] args) {
Integer[] a...
分类:
其他好文 时间:
2014-08-01 00:07:30
阅读次数:
295
介绍: BFPRT算法解决的问题十分经典,即从某n个元素的序列中选出第k大(第k小)的元素,通过巧妙的分 析,BFPRT可以保证在最坏情况下仍为线性时间复杂度。该算法的思想与快速排序思想相似,当然,为使得算法在最...
分类:
其他好文 时间:
2014-07-31 13:45:56
阅读次数:
452
代码如下: 1 template int binarySearch(const T* pt, int n, T t) 2 3 { 4 int head = 0, tail = n-1; 5 int i; 6 while (tail >= head) 7 { 8 i = (head +...
分类:
其他好文 时间:
2014-07-29 10:42:46
阅读次数:
214
折半查找,也叫二分查找,当在一个数组或集合中查找某个元素时,先定位出中间位置元素,如果要查找的元素正好和该中间位置元素相等,通过一次查找,就能找到匹配元素;如果要查找的元素小于该中间位置元素,就抛弃后面一半的元素,在前面一半的元素中再定位出中间位置元素,如此反复,直到找到匹配元素;如果要查找的元素大...
分类:
其他好文 时间:
2014-07-29 10:22:58
阅读次数:
313
二分查找算法是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组 为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。折半搜索每次把搜索区域减少一半,时间复杂度为Ο(logn)。...
分类:
其他好文 时间:
2014-07-27 23:52:09
阅读次数:
270
首先,这个算法的确很简单,但是写了很多次还是自己不能完全的写对.上码分析: 1 #include 2 #include 3 #include 4 5 #define LENGTH 4 // 数组的长度 6 #define MAX 10 // 随机数的最大值 7 8 /...
分类:
其他好文 时间:
2014-07-27 10:18:52
阅读次数:
151
折半查找也就是二叉查找,其查找时间复杂度为O(logn),比顺序查找的效率高得多,唯一的要求就是待查表已经有序。1、等值折半查找比较简单,算法如下:def binarySearch(data,value): low = 0 high = len(data) - 1 while lo...
分类:
其他好文 时间:
2014-07-26 00:50:56
阅读次数:
213
一、直接插入排序算法:void insertSort(int* data, int len){ int sentry;//哨兵 int i,j; for(i = 1; i 1)趟排序时,前(i-1)个记录已经有序,于是查找插入位置我们可以用折半查找。算法如下: 1 void bI...
分类:
其他好文 时间:
2014-07-26 00:41:36
阅读次数:
284