c++排序之二分法

来源:互联网 发布:小猪cms破解版 编辑:程序博客网 时间:2024/05/22 11:58

1. 二分法查找是一种非常高效的搜索方法,主要原理是每次搜索可以抛弃一半的值来缩小范围。

在离散数学中,如果f(n)是在规模为n的搜索序列中搜索一个元素所需要的比较次数,当n是偶数时,f(n)= f(n/2)+2

2. 二分法查找的时间复杂度是O(logn)

3. 二分法查找的适用情况一般满足以下几点:(1). 该数组数据量巨大;{2}. 该数组已经排序;(3). 一般要求找到的是某一个值

4. 什么时候我们可以大致判定该题需要用到二分法:(1). 需要对一道时间复杂度为n的题目进行优化;(2). 在题目中提到给到的数组已排序;(3). 只搜索一个值或一个位置

5. 二分法的基本代码如下:对于特定的题只需要修改某些细节即可。

#include <iostream> using namespace std;int search(int arr[10],int target){int start = 0;int end = 9;while(start+1<end){int mid = (start + end)/2;if(arr[mid]<target){start = mid;}if(arr[mid]>target){end = mid;}if(arr[mid]==target){return mid;}if(arr[start]==target){return start;}if(arr[end]==target){return end;}}return -1;}int main (){int _arr[10];for(int i = 0; i < 10; ++ i){cin >> _arr[i];}int _target;cin >> _target;if(search(_arr,_target)==-1){cout << "No , the number doesn't exist in the array!" <<endl;}else {cout <<"Yes,I find the number at " <<search(_arr,_target)+1<<" in the array!" <<endl;}} 

0 0
原创粉丝点击