首页 > 代码库 > 算法-对分查找(二分查找)C++实现
算法-对分查找(二分查找)C++实现
这个是个基本的查找算法,因为只是把数读入就需要(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; }
这里面没什么原理。。问题很简单~
算法-对分查找(二分查找)C++实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。