算法-对分查找(二分查找)C++实现

来源:互联网 发布:淘宝有什么好的男鞋店 编辑:程序博客网 时间:2024/05/22 19:53

这个是个基本的查找算法,因为只是把数读入就需要(N)的时间量,因此我们在说这类问题的时候都是假设读入过的。

在算法常用的时间,将问题缩小为一部分(大约1/2),那么我们就认为这个算法是O(logn)级别的。


先说下对分查找的时间复杂度为O(logn)

前提是已经拍序好的数列。


////  main.cpp//  binarySearch////  Created by Alps on 14-7-24.//  Copyright (c) 2014年 chen. All rights reserved.//#include <iostream>int binarySearch(const int A[], int X, int N){    int start = 0, end = 0, mid;    end = N;    while (start <= end) {        mid = (start + end)/2;        if (X > A[mid]) {            start = mid+1;            continue;        }else if (X < A[mid]){            end = mid-1;            continue;        }else{            return mid;        }    }    return -1;}int main(int argc, const char * argv[]){    int A[]={1 ,4 , 6, 8, 19, 34, 93};    int N = sizeof(A)/sizeof(int);    int X = 19;        int locate = binarySearch(A, X, N);    if (locate == -1) {        printf("Can't find the element %d\n",X);    }else{        printf("The element %d is locate in %d\n",X,locate);    }        return 0;}

这里面没什么原理。。问题很简单~ 

0 0
原创粉丝点击